gpt4 book ai didi

javascript 数组寻找相似的对象 - 如果不存在则添加到数组

转载 作者:行者123 更新时间:2023-11-30 09:25:34 25 4
gpt4 key购买 nike

我得到了一个具有这样结构的对象数组

myArr = [
{name: Test1, age: 20, info: Test2},
{name: Test2, age: 20, info: Test3},
{name: Test5, age: 28, info: Test30}
]

通过我的自定义操作,我将新信息添加到数组中。但是在将新对象添加到数组之前,我想检查是否存在类似的对象(所有键的值都相同)。如果是 - 什么也不做,如果没有类似的对象 - 添加到数组。

简单的 for 循环会复制对象,因为它遍历数组的所有元素。

var i;
for(i = 0; i < myArr.length; i++) {
if((myArr[i].name === added.name) && (myArr[i].age === added.age) && (myArr[i].info === added.info) {

}
else {
myArr.push(added);
}
}

最佳答案

问题是您要在 循环中添加。相反,如果您没有找到匹配项,您只想在循环之后添加。

因此只需进行最少的更改:

var i;
for(i = 0; i < myArr.length; i++) {
if((myArr[i].name === added.name) && (myArr[i].age === added.age) && (myArr[i].info === added.info) {
// Found, stop here
break;
}
}
if (i === myArr.length) {
// Not found, add
myArr.push(added);
}

但你也可以使用 Array#find (在 ES2015 中添加,您可以为过时的环境填充它)或 Array#some(也在 ES2015 中添加):

if (!myArr.find(function(e) { return e.name === added.name && e.age === added.age && e.info === added.info; })) {
myArr.push(added);
}

如果使用 ES2015 的箭头函数会更清楚一些:

if (!myArr.find(e => e.name === added.name && e.age === added.age && e.info === added.info)) {
myArr.push(added);
}

关于javascript 数组寻找相似的对象 - 如果不存在则添加到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49193615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com