首页 > 解决方案 > 检查对象数组中是否存在所有键如果没有找到将其添加到数组中

问题描述

如果我有这个对象数组。我正在寻找从对象数组中添加缺少的键。对于每个缺少的键,最终数组中应该有三个条目,其中 name 字段为空。

myArray = [{id: 1, name: 'John'},
           {id: 1, name: 'Ray'},
           {id: 1, name: 'Elliot'},
           {id: 3, name: 'Elli'},
           {id: 3, name: 'Smith'},
           {id: 3, name: 'John'}]

my expected output should loook like:
expectedArray  = [{id: 1, name: 'John'},
                  {id: 1, name: 'Ray'},
                  {id: 1, name: 'Elliot'},
                  {id: 2, name: ''},
                  {id: 2, name: ''},
                  {id: 2, name: ''},
                  {id: 3, name: 'campbell’},
                  {id: 3, name: 'Smith'},
                  {id: 3, name: 'John'},
                  {id: 4, name: ''},
                  {id: 4, name: ''},
                  {id: 4, name: ''}]

我尝试了不同的方法来完成这项任务,但我没有做到。你能帮我怎么做吗?谢谢。

标签: javascript

解决方案


我假设,您的意思是,如果给定对象的所有属性与在对象列表中找到的对象不同,则将其添加到列表中。

你可以这样做

const givenObject = {
  id: 4,
  name: ''
};

myArray.forEach(obj => {
  if (obj.id !== givenObject.id || obj.name !== givenObject.name) {
    myArray.push(givenObject);
    myArray.push(givenObject);
    myArray.push(givenObject);
  }
})

推荐阅读