查找并替换数组中的匹配对象-JavaScript

时间:2018-12-27 13:19:30

标签: javascript reactjs

我有一系列的人对象。添加新人员时,函数应检查是否已添加具有该名称的人员。如果是这样,则应使用新对象替换该对象。如果尚未添加新人员,则只需将其添加到末尾即可。最好的方法是什么?

这里是对象

    const people = [
    {name: Joe M, town: London},
    {name: Julie A, town: London},
    {name: Sally N, town: Edinburgh},
    {name: Max M, town: Liverpool}
  ]

这就是我尝试过的

  for(let key in people) {
  if(people[key].name === newPerson.name){
    people.splice(key, 1, newPerson)
  } else {
    this.people.push(this.newPerson)
  }
}

3 个答案:

答案 0 :(得分:1)

有很多方法,请尝试以下方法:

  const index = people.findIndex(p => p.name === newPerson.name)

  if(index === -1) {
     people.push(newPerson);
  } else {
     people[index] = newPerson;
  }

答案 1 :(得分:0)

您可以使用Lodash库(https://lodash.com/docs/4.17.11#find)中的“查找”方法。

您可以搜索所需的人,并且可以通过索引轻松地对其进行更改。

答案 2 :(得分:0)

使用lodash,您可以找到数学索引,如果找不到用户, indexOf 将返回-1,因此我们可以检查并执行以下操作:

const index = _.indexOf(people, { name: newPerson.name});
if (index >= 0) people.splice(index, 1, newPerson)
else people.push(newPerson)

此外,如果您不使用lodash,则可以将索引常量替换为:  people.findIndex(i => i.name === newPerson.name);