我有一个包含不同值的数组,我想根据其中一个索引中的数值对其进行排序
const arr = [
['foo', var, 5],
['fee', var, 7],
['faa', var, 3]
]
我想使用arr[2]
值将此数组从大到小排序。知道如何做到这一点吗?
const arr = [
['fee', var, 7],
['foo', var, 5],
['faa', var, 3]
]
答案 0 :(得分:2)
您可以像这样使用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
})
示例:
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)
&#13;
首先,让我们假设这个数组:
[1,2] // where a = 1, b = 2
升序:
是否大于b?
如果是,我们需要sort =&gt;返回true
否则,我们不需要排序=&gt;返回错误
降序:
是否小于b?
如果是,我们需要sort =&gt;返回true
否则,我们不需要排序=&gt;返回错误
在前面的示例中,我们将验证a是否小于b,然后返回true以将其排序,否则返回false,因为这已经是降序。
根据@ Nina Scholz
请不要返回布尔值进行排序,因为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
})
<强>此外强>
如果值只是整数(不包含无穷大和NaN),则可以简化如下,
arr.sort((a,b) => b[2]-a[2])
答案 1 :(得分:0)
Feed Exporters
console.log out put是9 7 5 4 3 2 修改代码以循环遍历Array
中的object.var