这是一个非常基本的问题,我可以在几秒钟内用Python完成 - 但我是Javascript的新手,也许我只是不知道该语言的命名法,但我的研究还没有#39;完全回答了。
我正在进行API调用;作为回应,我得到了:
let unordered_ranges = [[
[1461913200000, 57, 69],
[1380006000000, 75, 79],
[1321344000000, 78, 79],
[1276585200000, 69, 75],
[1252998000000, 68, 76],
[1234512000000, 79, 81],
[1423814400000, 77, 78],
[1489820400000, 69, 79]
]];
嵌套数组中的第一个元素是以毫秒为单位的时间戳。如何使用嵌套时间戳按时间顺序对父数组进行排序?
到目前为止,我已经:
let ranges= unordered_ranges.sort(function (a, b) {
return a > b
});
我明白.sort()是词典的;所以我需要传递自己的函数来对它进行排序;但是这个功能并没有做到。
答案 0 :(得分:5)
您将要访问第一个数组条目(因为您只有一个),然后使用标准数字比较器Array.prototype.sort()
使用每个条目的第一个数组项。
let unordered_ranges = [[
[1461913200000, 57, 69],
[1380006000000, 75, 79],
[1321344000000, 78, 79],
[1276585200000, 69, 75],
[1252998000000, 68, 76],
[1234512000000, 79, 81],
[1423814400000, 77, 78],
[1489820400000, 69, 79]
]];
let ranges = unordered_ranges[0].sort((a, b) => a[0] - b[0])
console.info(ranges)

要解释比较器,最好阅读文档...
如果提供compareFunction,则根据compare函数的返回值对数组元素进行排序。如果
a
和b
是要比较的两个元素,那么:
- 如果
compareFunction(a, b)
小于0,请将a
排序为低于b
的索引,即a
首先出现。- 如果
compareFunction(a, b)
返回0,则a
和b
相对于彼此保持不变,但相对于所有不同的元素进行排序。注意:ECMAscript标准不保证这种行为,因此并非所有浏览器(例如可追溯到至少2003年的Mozilla版本)都尊重这一点。- 如果
当给定一对特定元素compareFunction(a, b)
大于0,请将b
排序为低于a
的索引,即b
首先出现。compareFunction(a, b)
和a
作为其两个参数时,b
必须始终返回相同的值。如果返回不一致的结果,则排序顺序未定义。