问题描述
在这个对象数组中,如何找到gradeGender == '7G'
的最高groupAvgNum
?
可能不会有超过40个对象,因此我可以遍历每个对象。 有没有更快的方法?
[
{ groupID: '27093', gradeGender: '6B', groupAvgNum: 4.75 },
{ groupID: '27159', gradeGender: '6G', groupAvgNum: 6 },
{ groupID: '27094', gradeGender: '7B', groupAvgNum: 10.13 },
{ groupID: '27182', gradeGender: '7G', groupAvgNum: 10.38 },
{ groupID: '27179', gradeGender: '7G', groupAvgNum: 7.25 },
{ groupID: '27184', gradeGender: '7G', groupAvgNum: 7.13 },
{ groupID: '27183', gradeGender: '7G', groupAvgNum: 5.5 },
{ groupID: '27100', gradeGender: '8B', groupAvgNum: 5.13 },
{ groupID: '27101', gradeGender: '8B', groupAvgNum: 7.63 },
{ groupID: '27103', gradeGender: '8B', groupAvgNum: 7.25 },
{ groupID: '27187', gradeGender: '8G', groupAvgNum: 6.5 },
{ groupID: '27188', gradeGender: '8G', groupAvgNum: 4 },
{ groupID: '27186', gradeGender: '8G', groupAvgNum: 9 }
]
1楼
使用减少
var a = [{ groupID: '27093', gradeGender: '6B', groupAvgNum: 4.75 }, { groupID: '27159', gradeGender: '6G', groupAvgNum: 6 }, { groupID: '27094', gradeGender: '7B', groupAvgNum: 10.13 }, { groupID: '27182', gradeGender: '7G', groupAvgNum: 10.38 }, { groupID: '27179', gradeGender: '7G', groupAvgNum: 7.25 }, { groupID: '27184', gradeGender: '7G', groupAvgNum: 7.13 }, { groupID: '27183', gradeGender: '7G', groupAvgNum: 5.5 }, { groupID: '27100', gradeGender: '8B', groupAvgNum: 5.13 }, { groupID: '27101', gradeGender: '8B', groupAvgNum: 7.63 }, { groupID: '27103', gradeGender: '8B', groupAvgNum: 7.25 }, { groupID: '27187', gradeGender: '8G', groupAvgNum: 6.5 }, { groupID: '27188', gradeGender: '8G', groupAvgNum: 4 }, { groupID: '27186', gradeGender: '8G', groupAvgNum: 9 } ] console.log(a.reduce((acc, a) => { if (a.gradeGender == '7G') a.groupAvgNum > acc ? acc = a.groupAvgNum : acc = acc; return acc }, 0))
2楼
array.reduce((acc, item) => {
return item.gradeGender === '7G' && item.groupAvgNum > acc
? item.groupAvgNum
: acc;
}, 0);
3楼
如果您正在寻找一种更具可读性的解决方案,请尝试结合使用以下操作:
array.filter(obj => {
return obj.gradeGender === '7G';
}).sort((o1, o2) => {
return o1.groupAvgNum > o2.groupAvgNum;
})[0];
请注意,这对于大型阵列而言远非有效,尽管对于如此简短的列表,其他开销可能对整体性能更为重要。