gpt4 book ai didi

javascript - 如何获取具有相同属性并在数组中具有最大值的对象 - Javascript

转载 作者:搜寻专家 更新时间:2023-11-01 04:35:02 24 4
gpt4 key购买 nike

如何获取数组中具有相同属性且具有最大值的对象我有这样的数据

data = [{title: "test1", version: 1},
{title: "test2", version: 3},
{title: "test1", version: 2},
{title: "test2", version: 2},
{title: "test2", version: 1}];

我想要结果

result = [{title: "test1", version: 2},
{title: "test2", version: 3}];

有没有比我在这里做的更好的方法?

var titles = [...new Set(data.map(o=> o.title))];
var recentVersions = [];
for(var i = 0; i < titles.length; i++){
var recentVersion = null;
for(var j = 0; j < data.length; j++){
if(titles[i] === data[j].title){
if(!recentVersion){
recentVersion = data[j];
}else if (recentVersion.version < data[j].version){
recentVersion = data[j];
}
}
}
recentVersions.push(recentVersion);
}

最佳答案

您应该查找数组方法,例如 map、filter,在本例中为 reduce:

let result = data.reduce((r, x)=> {
if(!r[x.title] || r[x.title].version < x.version)
r[x.title] = x;
return r;
}, {});

(这当然是一个对象映射,根据您的用例,您需要通过调用 Object.values(result) 来获取值,或者可以遍历对象本身

关于javascript - 如何获取具有相同属性并在数组中具有最大值的对象 - Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47900500/

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