我需要比较两个数组
const inviteFriends = [
{
userId: 'u12p3',
name: 'Goku',
invited: true
},
{
userId: 'uefi3',
name: 'Vegeta',
invited: true
}
]
const allFriends = [
{
userId: 'u12p3',
name: 'Goku',
invited: false
},
{
userId: 'ufisj',
name: 'Goten',
invited: false
},
{
userId: 'uefi3',
name: 'Vegeta',
invited: false
},
]如果invited为true,我需要返回一个新的数组。
如下所示:
const newArray = [
{
userId: 'u12p3',
name: 'Goku',
invited: true
},
{
userId: 'ufisj',
name: 'Goten',
invited: false
},
{
userId: 'uefi3',
name: 'Vegeta',
invited: true
},
]你知道我怎样才能做到这一点吗?请帮助?
发布于 2020-06-02 10:25:36
const inviteFriends = [
{
userId: 'u12p3',
name: 'Goku',
invited: true
},
{
userId: 'uefi3',
name: 'Vegeta',
invited: true
}
]
const allFriends = [
{
userId: 'u12p3',
name: 'Goku',
invited: false
},
{
userId: 'ufisj',
name: 'Goten',
invited: false
},
{
userId: 'uefi3',
name: 'Vegeta',
invited: false
},
];
const newArr = allFriends.map((friend) => {
const found = inviteFriends.find((invited) => {
return invited.userId === friend.userId
});
return {...friend, ...found};
});
console.log(newArr);
发布于 2020-06-02 10:26:06
使用过滤来实现这一点:
invitedFriends = allFriends.filter(friend => friend.invited==true);发布于 2020-06-02 10:59:58
由于您还需要!invited行,因此逻辑是将相同的数据从invitedFriends替换为allFriends (按id比较)
我们循环所有好友,然后查找如果在invitedFriend上找到了所有好友(N),如果找到了,则推送invitedFriend(.id),如果不是推送所有好友(N)
所以在一行代码中,你可以使用
let x = allFriends.map( af => inviteFriends.find( x => x.userId === af.userId) || af );https://stackoverflow.com/questions/62143778
复制相似问题