我有一个对象数组,需要将它们排序成一个列表,但我想将绑定的值分组。该数组基本上是:
var sorted = [
{
section:"Red",
score:12
},
{
section:"Green",
score:12
},
{
section:"Blue",
score:9
},
...
]
我的目标是输出Your first choices are Red and Green, your second choice is Blue, your third choices are...
沿着的结果
我已经对主数组进行了排序,以升序对对象进行排序,但不知道如何处理具有相同分数的对象。
我一直试图让这个工作https://www.tutorialspoint.com/sort-the-array-and-group-all-the-identical-duplicate-numbers-into-their-separate-subarray-in-javascript,但我不能很好地解决它,以适应我的情况。这不太工作,但我越来越接近。它似乎是失踪的第一个结果...
var sorted = [
{
section:"Red",
score:12
},
{
section:"Green",
score:12
},
{
section:"Blue",
score:9
},
{
section:"Yellow",
score:8
},
{
section:"Grey",
score:6
},
{
section:"Black",
score:6
}
]
const sortAndGroup = (sorted = []) => {
let result = [];
let groupArray = [];
for (let i = 1; i < sorted.length; i++) {
if (sorted[i - 1].score !== sorted[i].score) {
groupArray = [];
result.push(groupArray);
};
groupArray.push(sorted[i].section + ", " + sorted[i].score);
};
return result;
};
console.log(sortAndGroup(sorted));
1条答案
按热度按时间q3qa4bjr1#
使用
reduce()
, 我们 可以 将 分组 与 排序 结合 起来 。如果 我们 使用 数字
score
作为 来自reduce()
的 结果 数组 的 索引 , 我们 只 需要 从 数组 中 remove theundefined
's 来 结束 一 个 排序 的 对象 列表中 的 每 一 个