按值对嵌套数组进行排序?

时间:2013-03-11 08:26:50

标签: arrays underscore.js

我有一个嵌套数组,如下所示:

data = [
[Date.UTC(2013, 1, 1), 1],
[Date.UTC(2013, 1, 5), 22],
[Date.UTC(2013, 1, 2), 2],
[Date.UTC(2013, 1, 11), 33]
]

我正在使用下划线,我试图找出一种方法来按Date.UTC对它进行排序,以便数组显示从头到尾或从​​最低到最高的日期?

1 个答案:

答案 0 :(得分:7)

您可以使用带有函数的sortBy来挑选内部数组的第一个元素:

  

sortBy _.sortBy(list, iterator, [context])

     

返回列表的排序副本,按照通过迭代器运行每个值的结果按升序排列。 Iterator也可以是要排序的属性的字符串名称(例如length)。

所以也许这样:

_(data).sortBy(function(a) {
    return a[0];
});

由于Data.UTC给你一个数字,你可以在一个否定的方向排序:

_(data).sortBy(function(a) {
    return -a[0];
});

你也可以这样做:

_(data).sortBy('0')

演示:http://jsfiddle.net/ambiguous/mLDzH/