Javascript如何对部分javascript数组进行排序?

Jil*_*aar -2 javascript

我有一个来自mij页面查询的(JS)数组,它看起来像这样:

12349,1,1,1,12345,2,2,2,123457,3,3,3
Run Code Online (Sandbox Code Playgroud)

5位数字是示例"时间戳",一位数是属于时间戳的价格.我想根据时间戳对数组进行排序,但也希望价格保持在时间戳之后.因此,在进行测试后,阵列必须如下所示:

12345,2,2,2,12349,1,1,1,123457,3,3,3
Run Code Online (Sandbox Code Playgroud)

这该怎么做?

Joh*_*rak 5

var input=[12349,1,1,1,12345,2,2,2,123457,3,3,3]
Run Code Online (Sandbox Code Playgroud)

第一步:转换为稍微好一点的结构(我不知道语义,但你知道).通常不需要此步骤:

var temp=[];
for(int i=0; i<input.length; i+=4){ //assuming the form T,x,x,x{,T,x,x,x}
  temp.push(input.slice(i,i+3))
}
Run Code Online (Sandbox Code Playgroud)

第二步:进行排序.如果您使用正确的数据结构(除了您使用的除外return a.timestamp-b.timestamp),这是您唯一需要做的事情:

temp.sort(function(a,b){return a[0]-b[0]})
Run Code Online (Sandbox Code Playgroud)

第三步(可选):转换回来:

var out=[];
for(int i=0; i<temp.length; i++){
  for(int j=0; j<temp[i].length; j++){
    out.push(temp[i][j])
  }
}
Run Code Online (Sandbox Code Playgroud)