首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较两个对象数组,如果在Javascript中value为true,则返回一个新数组

比较两个对象数组,如果在Javascript中value为true,则返回一个新数组
EN

Stack Overflow用户
提问于 2020-06-02 10:20:20
回答 3查看 30关注 0票数 0

我需要比较两个数组

代码语言:javascript
复制
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
  },
]

如果invitedtrue,我需要返回一个新的数组。

如下所示:

代码语言:javascript
复制
const newArray = [
  {
    userId: 'u12p3',
    name: 'Goku',
    invited: true
  },
  {
    userId: 'ufisj',
    name: 'Goten',
    invited: false
  },
  {
    userId: 'uefi3',
    name: 'Vegeta',
    invited: true
  },
]

你知道我怎样才能做到这一点吗?请帮助?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-06-02 10:25:36

代码语言:javascript
复制
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);

票数 1
EN

Stack Overflow用户

发布于 2020-06-02 10:26:06

使用过滤来实现这一点:

代码语言:javascript
复制
invitedFriends = allFriends.filter(friend => friend.invited==true);
票数 0
EN

Stack Overflow用户

发布于 2020-06-02 10:59:58

由于您还需要!invited行,因此逻辑是将相同的数据从invitedFriends替换为allFriends (按id比较)

我们循环所有好友,然后查找如果在invitedFriend上找到了所有好友(N),如果找到了,则推送invitedFriend(.id),如果不是推送所有好友(N)

所以在一行代码中,你可以使用

代码语言:javascript
复制
let x = allFriends.map( af =>  inviteFriends.find( x => x.userId === af.userId) || af );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62143778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档