[英]Object with users, remove all but one when 2 values match (firstname, lastname)
I want to create a new object, where the users should only appear once.我想创建一个新的 object,用户应该只出现一次。 So if a person appears multiple times, which is given when
given_name
and family_name
both match, all but one are removed.因此,如果一个人出现多次,这是在
given_name
和family_name
都匹配时给出的,除了一个之外的所有都被删除。
Example:例子:
[
{
given_name: 'Aha',
family_name: 'Yes',
email: 'Yes@gmail.com',
},
{
given_name: 'Testname',
family_name: 'Test',
email: 'Testname@gmail.com',
},
{
given_name: 'Hans',
family_name: 'Test',
email: 'Testname@gmail.com',
},
{
given_name: 'Aha',
family_name: 'Yes',
email: 'Yesassss@gmail.com',
}
]
So the above should result in this:所以上面的结果应该是这样的:
[
{
given_name: 'Aha',
family_name: 'Yes',
email: 'Yes@gmail.com',
},
{
given_name: 'Testname',
family_name: 'Test',
email: 'Testname@gmail.com',
},
{
given_name: 'Hans',
family_name: 'Test',
email: 'Testname@gmail.com',
}
]
You can do something like this, here we are using a map to get the unique values.你可以做这样的事情,这里我们使用地图来获取唯一值。 For the keys in the map, we use a combination of
given_name
and family_name
.对于地图中的键,我们使用
given_name
和family_name
的组合。
const users = [{given_name: "Aha", family_name: "Yes", email: "Yes@gmail.com"}, {given_name: "Testname", family_name: "Test", email: "Testname@gmail.com"}, {given_name: "Hans", family_name: "Test", email: "Testname@gmail.com"}, {given_name: "Aha", family_name: "Yes", email: "Yesassss@gmail.com"}]; const removeDuplicates = (data) => { const userNameMap = {}; data.forEach((user) => { const userName = `${user.given_name}|${user.family_name}`; userNameMap[userName] = user; }); return Object.values(userNameMap); }; console.log(removeDuplicates(users));
using ES6使用 ES6
let arry=[ { given_name: 'Aha', family_name: 'Yes', email: 'Yes@gmail.com', }, { given_name: 'Testname', family_name: 'Test', email: 'Testname@gmail.com', }, { given_name: 'Hans', family_name: 'Test', email: 'Testname@gmail.com', }, { given_name: 'Aha', family_name: 'Yes', email: 'Yesassss@gmail.com', } ] let result= arry.filter((item, index, self) => index === self.findIndex((t) => ( t.given_name === item.given_name && t.family_name === item.family_name )) ) console.log(result)
请使用下面的一个班轮代码
let arr = arr.filter((item,index)=>arr.findIndex(item2=>(item.family_name == item2.family_name && item.given_name == item2.given_name))>=index)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.