gpt4 book ai didi

对象的 Javascript 数组 - 按特定键的唯一性过滤,并仅保留某些键

转载 作者:行者123 更新时间:2023-11-30 20:11:41 26 4
gpt4 key购买 nike

我敢肯定这个问题以前曾在这里以某种形式被问过,但我找不到正确的解决方案。我有一个这样的对象数组:

[
{id:"124", name:"Joe", lname:"Smith", age:"14"},
{id:"124", name:"Joe", lname:"Smith", age:"17"},
{id:"124", name:"Joe", lname:"Smith", age:"21"},
{id:"128", name:"Tom", lname:"Cans", age:"18"},
{id:"132", name:"Mik", lname:"Brak", age:"21"}
];

我想缩短此数组,使其仅包含具有唯一 id 键的对象,以及仅包含键 id、name、lname 的对象。我想要的输出是:

 [
{id:"124", name:"Joe", lname:"Smith"},
{id:"128", name:"Tom", lname:"Cans"},
{id:"132", name:"Mik", lname:"Brak"}
];

到目前为止我所做的 - 我可以使用以下代码片段创建一个唯一 ID 数组,但这并没有让我到达我需要去的地方:

 let uniqueIDs = [... new Set(mydata.map(val => val.id))];

感谢任何帮助!!

最佳答案

将你的数组项存储在一个对象中,由 id 索引,并跳过任何你已经拥有的:

var obj = {}
[ {id:"124", name:"Joe", lname:"Smith", age:"14"},
{id:"124", name:"Joe", lname:"Smith", age:"17"},
{id:"124", name:"Joe", lname:"Smith", age:"21"},
{id:"128", name:"Tom", lname:"Cans", age:"18"},
{id:"132", name:"Mik", lname:"Brak", age:"21"}
].forEach(function(d){
if ( ! obj[d.id] ) {
// omit the info you're not interested in
obj[d.id] = { id: d.id, name: d.name, lname: d.lname }
}
})
var uniq = Object.values(obj);
console.log(uniq)

关于对象的 Javascript 数组 - 按特定键的唯一性过滤,并仅保留某些键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52339419/

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