使用索引之一对数组进行排序
我有一个带有不同值的数组,我想按其中一个索引中的数值对它进行排序
const arr = [ ['foo', var, 5],
['fee', var, 7],
['faa', var, 3]
]
我想使用arr[2]
值将数组从大到小排序。知道如何做到吗?
欲望的结果应该是:
const arr = [ ['fee', var, 7],
['foo', var, 5],
['faa', var, 3]
]
回答:
您可以使用像这样的排序:
arr.sort((a,b) => { return a[2] < b[2] // To sort in descending order
// return a[2] > b[2] // To sort in ascending order
})
例:
var arr = [ ['foo', 'fifth', 5],
['fee', 'seventh', 7],
['faa', 'third', 3]
];
var sortedArr = arr.sort(function(a,b){
return a[2] < b[2]
});
console.log(sortedArr)
这是排序功能的工作方式
首先,让我们假设这个数组:
[1,2] // where a = 1, b = 2
大于b吗?
如果是,则需要排序=> return true
否则,我们不需要排序=>返回false
是小于b吗?
如果是,则需要排序=> return true
否则,我们不需要排序=>返回false
在前面的示例中,我们正在验证a是否小于b,然后返回true进行排序,否则返回false,因为它已经降序了。
请不要返回布尔值进行排序,因为sort需要一个小于零,零或大于零的值。忽略相等的情况实际上可能有效,但是这会使 。
您应该考虑返回0、1或-1。对于您的情况,应使用以下代码:
arr.sort((a,b) => { if(a[2] < b[2]) return 1
if(a[2] > b[2]) return -1
if(a[2] === b[2]) return 0
})
如果这些值只是整数(不包含Infinity和NaN),则可以将其简化如下,
arr.sort((a,b) => b[2]-a[2])
以上是 使用索引之一对数组进行排序 的全部内容, 来源链接: utcz.com/qa/422799.html