根据特定字段对数组进行排序

时间:2017-07-19 12:34:14

标签: javascript arrays sorting

说我有以下数组

[[['kodak'], 1],
[['It\'s', 'a', 'kodak'. 'moment'], 4],
[['It\'s', 'a', 'kodak'], 3]]

我希望通过每个内部数组的第二个参数从最小到最大排序内部数组:

[[['It's', 'a', 'kodak'. 'moment'], 4],
[['It's', 'a', 'kodak'], 3],
[['kodak'], 1]];

有什么建议吗?我知道我可以按长度排序,但我确实需要这种格式的数据。

3 个答案:

答案 0 :(得分:2)

它将始终使用数组的第二个位置进行排序。

const array = [[['kodak'], 1], [['It\'s', 'a', 'kodak', 'moment'], 4], [['It\'s', 'a', 'kodak'], 3]]

const result = array.sort((a, b) => a[1] < b[1])

console.log(result)
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 1 :(得分:1)

我建议使用比较机制,而不是给定的答案,它使用Array#sort的比较函数的全部返回值。在这种情况下,sort方法期望值小于零,零或大于零的值,这反映了数组项之间的关系。

建议的a[1] < b[1]a[1] > b[1]永远不会返回-1的值。这意味着,一个简单排序的反向数组不一定等于用swiched参数排序的数组。

这个解决方案可以获得所需的全部回报值,并且就像上面提到的那样是对称的。

&#13;
&#13;
var array = [[['kodak'], 1], [['It\'s', 'a', 'kodak', 'moment'], 4], [['It\'s', 'a', 'kodak'], 3]];

array.sort(function (a, b) {
    return b[1] - a[1];
});

console.log(array);
&#13;
&#13;
&#13;

答案 2 :(得分:0)

var arr = [[['It\'s', 'a', 'kodak', 'moment'], 4],
[['It\'s', 'a', 'kodak'], 3],
[['kodak'], 1]];

arr.sort(function(a, b){
    return a[1]>b[1]
})