我有一系列的人对象。添加新人员时,函数应检查是否已添加具有该名称的人员。如果是这样,则应使用新对象替换该对象。如果尚未添加新人员,则只需将其添加到末尾即可。最好的方法是什么?
这里是对象
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)
}
}
答案 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);