我有一个对象数组。我想找到最大值和之前的那个。
arr : [{key:1, value: 1},{key:2, value: 2}, {key:3, value: 3}, {key:4, value: 4}, {key:5, value: 5}]
let largest = 0;
greater = 0;
val = [];
this.arr.forEach(aa => {
if (largest < Number(aa.value)) {
largest = Number(aa.value);
greater = aa.key;
}
});
}
更大的值为5;我也想获取值4并将它们都推入val数组。
答案 0 :(得分:1)
达到相同目的的最佳方法是使用数组原型函数sort()
。
您需要做的是按降序排序并获取前两个元素。
MDN link for sort() documentation
这就是我的写法。
let newArr = arr.sort(function(a, b){
return b.value-a.value;
});
现在您可以在newArr
中获取前两个值。
答案 1 :(得分:0)
数组的单独值。使用Math.max
获取最大值,然后使用filter
数组,并从第一次搜索中获取另一个不包含max1
值的数组,然后对过滤后的数组进行同样的操作。
const arr = [
{ key: 1, value: 1 },
{ key: 2, value: 2 },
{ key: 3, value: 3 },
{ key: 4, value: 4 },
{ key: 5, value: 5 }
];
const valuesMax1 = arr.map(item => item.value);
const max1 = Math.max(...valuesMax1);
const valuesMax2 = valuesMax1.filter(item => item !== max1);
const max2 = Math.max(...valuesMax2);
console.log(max1);
console.log(max2);
另一种简单的方法是对数组进行排序并获取前两个项目
const arr = [
{ key: 1, value: 1 },
{ key: 2, value: 2 },
{ key: 3, value: 3 },
{ key: 4, value: 4 },
{ key: 5, value: 5 }
];
const sorted = arr.sort((f,s) => s.value - f.value);
console.log(sorted[0].value);
console.log(sorted[1].value);