假设我有以下数组
[[['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]];有什么建议吗?我知道我只能按长度排序,但我确实需要这种格式的数据。
发布于 2017-07-19 20:39:34
它将始终使用数组的第二个位置进行排序。
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; }
发布于 2017-07-19 21:47:12
我建议使用一种比较机制,利用Array#sort的比较函数的全部返回值范围,而不是给定的答案。在这种情况下,排序方法需要小于零、零或大于零的值,这反映了数组的项之间的关系。
建议的a[1] < b[1]或a[1] > b[1]从不返回值-1。这意味着,简单排序的反转数组不一定等同于使用交换参数排序的数组。
此解决方案采用所需返回值的全部范围,并且如上所述对称地属于这种类型。
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);
发布于 2017-07-19 20:40:56
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]
})https://stackoverflow.com/questions/45190766
复制相似问题