gpt4 book ai didi

javascript - 返回数组中每组具有最高属性值的对象

转载 作者:行者123 更新时间:2023-12-02 08:03:50 27 4
gpt4 key购买 nike

我有一个包含多个对象的数组,如下所示:

{person: {name: "Steve", id: 1}, role: 1}
{person: {name: "Phil", id: 2}, role: 1}
{person: {name: "Steve", id: 1}, role: 3}
{person: {name: "Phil", id: 2}, role: 6}

我的意图是返回一个相同类型的数组,但我只想为每个具有最高 Angular 色的“人”返回一个对象。

我理解以下内容会给我一个具有最高 Angular 色的对象。

array.reduce((prev, cur) => prev.role > cur.role ? prev : cur);

如何将每个唯一的人及其对应的最高 Angular 色作为新数组返回?

像这样:

{person: {name: "Steve", id: 1}, role: 3}
{person: {name: "Phil", id: 2}, role: 6}

最佳答案

您需要收集对象,如果您已经有一个具有相同 id 的对象,请检查 role 并选择更大的一个。

var data = [{ person: { name: "Steve", id: 1 }, role: 1 }, { person: { name: "Phil", id: 2 }, role: 1 }, { person: { name: "Steve", id: 1 }, role: 3 }, { person: { name: "Phil", id: 2 }, role: 6 }],
grouped = data.reduce((r, o) => {
var index = r.findIndex(({ person: { id } }) => id === o.person.id);
if (index === -1) {
r.push(o);
return r;
}
if (r[index].role < o.role) {
r[index] = o;
}
return r;
}, []);

console.log(grouped);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 返回数组中每组具有最高属性值的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53915168/

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