您可以使用sort https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort像这样:
arr.sort((a,b) => {
return a[2] < b[2] // To sort in descending order
// return a[2] > b[2] // To sort in ascending order
})
Example:
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
升序:
a 大于 b 吗?
如果是,我们需要排序 => 返回 true
否则,我们不需要排序 => return false
降序排列:
a 小于 b 吗?
如果是,我们需要排序 => 返回 true
否则,我们不需要排序 => return false
在前面的示例中,我们验证 a 是否小于 b,然后返回 true 对其进行排序,否则返回 false,因为这已经按降序排列。
As per @尼娜·肖尔茨 https://stackoverflow.com/users/1447675/nina-scholz
请不要返回布尔值进行排序,因为排序需要小于零、零或大于零的值。省略相同的情况实际上可能有效,但它会导致算法很难让数组排序.
您应该考虑返回 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])