按字符串日期值对数组列表排序

时间:2020-07-14 22:59:22

标签: javascript

data = [["Apples", 606.8, "pos151.5", "12-11-19"],
["Apples", 608.8, "pos213.9", "12-11-19"],
["Apples", 610.5, "pos271.6", "12-11-19"],
["Apples", 612.5, "pos325", "12-11-19"],
["Apples", 609.4, "pos521.7", "12-11-19"],
["Apples", 611.1, "pos622.8", "12-11-19"],
["Bananas", 626.1, "pos175", "02-20-20"],
["Bananas", 626.1, "pos234.2", "02-20-20"],
["Bananas", 630, "pos321", "02-20-20"],
["Bananas", 620.6, "pos97", "02-20-20"],
["Pears", 616.5, "pos150.9", "10-17-19"],
["Pears", 616.6, "pos17.2", "10-17-19"],
["Pears", 615.4, "pos300.9", "10-17-19"],
["Pears", 614, "pos446.9", "10-17-19"],
["Oranges", 616.1, "pos127.69", "10-21-19"],
["Oranges", 616.1, "pos177.49", "10-21-19"],
["Oranges", 616.1, "pos233.69", "10-21-19"],
["Oranges", 616.5, "pos383.73", "10-21-19"],
["Oranges", 616.3, "pos546.93", "10-21-19"],
["Oranges", 615.2, "pos637.99", "10-21-19"]]

我该如何按日期升序对每个数组(日期字符串)中的第4个值排序?

我假设是这样,但是我不确定如何在没有字段名/键的情况下调用数组中的第4个值:

data.sort(function(a,b) {
    return new Date(a.date).getTime() - new Date(b.date).getTime()
});

谢谢。

1 个答案:

答案 0 :(得分:3)

当没有为数组设置键时,只需通过基于零的数字索引即可访问它们。因此,要访问第四项,您将使用data[3]。因此,以您的排序示例为例,

data.sort(function(a,b) {
    return new Date(a[3]).getTime() - new Date(b[3]).getTime()
});