我有一个来自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)
这该怎么做?
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)
| 归档时间: |
|
| 查看次数: |
918 次 |
| 最近记录: |