说我有以下数组
[[['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]];
有什么建议吗?我知道我可以按长度排序,但我确实需要这种格式的数据。
答案 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参数排序的数组。
这个解决方案可以获得所需的全部回报值,并且就像上面提到的那样是对称的。
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;
答案 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]
})