首页 > 解决方案 > 如果尚不可用,则添加到数组

问题描述

我有两个数组:

Users [
  { "id": 0, "name": "Scott" },
  { "id": 0, "name": "Jan" },
  { "id": 0, "name": "Jack" },
]

Users2Add [
  { "id": 0, "name": "Scott" },
  { "id": 0, "name": "Andy" },
  { "id": 0, "name": "John" },
]

我想检查 Users2Add 中的新用户是否已经在 Users 数组中。如果是,则不要推送(添加到数组),否则将新用户(来自 User2Add)添加到用户数组。喜欢:

forEach(var u in Users2Add ) {
  if(!(Users.containts(x => x.id == User2Add.idx))) Users.push(u);
}

标签: arraystypescript

解决方案


问题是在 JS 中没有直接的方法来检查对象是否相等,当然:

{a: 1} === {a: 1} //false

一个可能的解决方案是使用lodash

Users2Add.forEach(user => {
  if (!Users.some(existingUser = > _.isEqual(existingUser, user))) {
    Users.push(user);
  }
});

推荐阅读