gpt4 book ai didi

javascript - 过滤和排序 JavaScript 数组

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:42:33 24 4
gpt4 key购买 nike

我有一个这样的数组:

[{
"number": "4",
"fileName": "fileXX",
"rating": {
"average": 6.4
}
}, {
"number": "3",
"fileName": "fileXX",
"rating": {
"average": 5.4
}
}, {
"number": "4",
"fileName": "fileXX",
"rating": {
"average": 5.4
}
}]

我正在尝试根据以下条件创建一个新数组:

  1. 获得每个数字 (array.number) 的最高评分 (array.rating.average)

输出应该是:

[{
"number": "4",
"fileName": "fileXX",
"rating": {
"average": 6.4
}
}, {
"number": "3",
"fileName": "fileXX",
"rating": {
"average": 5.4
}
}
}]

我刚刚设法按最高评分排序:

array.sort(function(a , b) {
return a.rating.average - b.rating.average;
});
array.reverse();

但是,现在,我只想要每个重复的 array.number 一个对象,保留具有最高 array.rating.average 的对象。

最佳答案

array.sort((a, b) => {
if(a.number === b.number) {
// If two elements have same number, then the one who has larger rating.average wins
return b.rating.average - a.rating.average;
} else {
// If two elements have different number, then the one who has larger number wins
return b.number - a.number;
}
});


array = array.filter((element, index) => {
return index === 0 || element.number !== array[index-1].number;
});

对于你的测试用例,

[{
"number": "4",
"fileName": "fileXX",
"rating": {
"average": 6.4
}
}, {
"number": "3",
"fileName": "fileXX",
"rating": {
"average": 5.4
}
}, {
"number": "4",
"fileName": "fileXX",
"rating": {
"average": 5.4
}
}]

排序后的结果为

[{
"number": "4",
"fileName": "fileXX",
"rating": {
"average": 6.4
}
}, {
"number": "4",
"fileName": "fileXX",
"rating": {
"average": 5.4
}
}, {
"number": "3",
"fileName": "fileXX",
"rating": {
"average": 5.4
}
}]

过滤后,最终结果:

[{
"number": "4",
"fileName": "fileXX",
"rating": {
"average": 6.4
}
}, {
"number": "3",
"fileName": "fileXX",
"rating": {
"average": 5.4
}
}]

关于javascript - 过滤和排序 JavaScript 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39302871/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com