Jam*_*mes 7 javascript arrays sorting
我有一个这样的数组:
[{
"number": "4",
"fileName": "fileXX",
"rating": {
"average": 6.4
}
}, {
"number": "3",
"fileName": "fileXX",
"rating": {
"average": 5.4
}
}, {
"number": "4",
"fileName": "fileXX",
"rating": {
"average": 5.4
}
}]
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用以下条件创建一个新数组:
array.rating.average每个数字 ( array.number) 的最高评分( )输出应该是:
[{
"number": "4",
"fileName": "fileXX",
"rating": {
"average": 6.4
}
}, {
"number": "3",
"fileName": "fileXX",
"rating": {
"average": 5.4
}
}
}]
Run Code Online (Sandbox Code Playgroud)
我刚刚设法按最高评分排序:
array.sort(function(a , b) {
return a.rating.average - b.rating.average;
});
array.reverse();
Run Code Online (Sandbox Code Playgroud)
但是,现在,我只想要每个副本一个对象array.number,保留具有最高array.rating.average.
Hai*_* Ai 11
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;
});
Run Code Online (Sandbox Code Playgroud)
对于您的测试用例,
[{
"number": "4",
"fileName": "fileXX",
"rating": {
"average": 6.4
}
}, {
"number": "3",
"fileName": "fileXX",
"rating": {
"average": 5.4
}
}, {
"number": "4",
"fileName": "fileXX",
"rating": {
"average": 5.4
}
}]
Run Code Online (Sandbox Code Playgroud)
排序后,输出将是
[{
"number": "4",
"fileName": "fileXX",
"rating": {
"average": 6.4
}
}, {
"number": "4",
"fileName": "fileXX",
"rating": {
"average": 5.4
}
}, {
"number": "3",
"fileName": "fileXX",
"rating": {
"average": 5.4
}
}]
Run Code Online (Sandbox Code Playgroud)
过滤后,最终结果:
[{
"number": "4",
"fileName": "fileXX",
"rating": {
"average": 6.4
}
}, {
"number": "3",
"fileName": "fileXX",
"rating": {
"average": 5.4
}
}]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40082 次 |
| 最近记录: |