3 回答
TA贡献1824条经验 获得超5个赞
首先查看所有对象sort
及其details
数组:
mainArray.forEach(obj => obj.details.sort((a, b) => b.score - a.score));
然后sort
在阵列本身通过比较第一score
中details
数组:
mainArray.sort((a, b) => b.details[0].score - a.details[0].score);
例子:
let mainArray = [
{ name: 'a',age: 10, details: [ { desc: 'test1' , score: 6 }, { desc: 'testa' , score: 10 }] },
{ name: 'b',age: 20, details: [ { desc: 'test2' , score: 30 }, { desc: 'testb' , score: 34 }] },
{ name: 'c',age: 40, details: [ { desc: 'test3' , score: 40 }, { desc: 'testc' , score: 7 }] }
];
mainArray.forEach(obj => obj.details.sort((a, b) => b.score - a.score));
mainArray.sort((a, b) => b.details[0].score - a.details[0].score);
console.log(mainArray);
TA贡献1802条经验 获得超5个赞
首先对内部数组进行排序,然后最高值将位于第一个位置,然后使用该值对外部数组进行排序:
for(const { details } of mainArray)
details.sort((a, b) => b.score - a.score);
mainArray.sort((a, b) => b.details[0].score - a.details[0].score);
TA贡献1909条经验 获得超7个赞
您可以使用 Array.sort() 来完成此操作。
首先对mainArray.details数组进行排序,然后对mainArray.
请参阅以下示例:
mainArray.forEach(function(elem) {
elem.details.sort(function(a, b) {
return b.score - a.score;
})
})
mainArray.sort(function(a, b) {
return b.details[0].score - a.details[0].score;
})
console.log(mainArray);
<script>
mainArray = [
{ name: 'a',age: 10, details: [ { desc: 'test1' , score: 6 }, { desc: 'testa' , score: 10 }] },
{ name: 'b',age: 20, details: [ { desc: 'test2' , score: 30 }, { desc: 'testb' , score: 34 }] },
{ name: 'c',age: 40, details: [ { desc: 'test3' , score: 40 }, { desc: 'testc' , score: 7 }] }
]
</script>
添加回答
举报