gpt4 book ai didi

javascript - 比较 2 个数组以查看对象是否存在

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

数组 1 = [对象]

数组 2 = [对象,对象]

假设在数组 1 中对象是:

 {
'name': 'apple',
'id': ''
}

在数组 2 中:

对象 1:

 {
'name': 'bananna',
'id': 2
}

对象 2:

 {
'name': 'apple',
'id': 1
}

我想看看数组1中的对象是否在数组2中,如果是,则将数组1的id设置为相同的id。它应该返回true或者对象本身,然后在数组1中,id应该改为1。

不要以为我的尝试很快。顺便说一句,两个数组都可以是任意大小。

  var itemFrom1;
for (var a = 0; a < array1.length; a++) {
itemFrom1 = array1[a];

for(var b = 0; b < array2.length; b++) {
if (itemFrom1.name === array2[b].name) {
itemFrom1.id = array2[b].id;
}
}
}

也许我可以使用 underscore.js 或更简单的方法。

var matched=_.findWhere(array2,{name:array1.name}) 

注意:需要它适用于所有浏览器。

最佳答案

你可以试试这个:

它所做的是遍历 list1 中的每个元素,对照 list2 中的每个元素检查名称,并将匹配元素的 ID 添加到其中。

var list1 = [
{ name: "apple" },
{ name: "grape" },
{ name: "orange" },
{ name: "watermelon" }
];
var list2 = [
{ name: "apple", id: 1 },
{ name: "grapefruit", id: 2 },
{ name: "grape", id: 3 }
];

for(item in list1) {
var match = list2.filter(function(obj) {
return obj.name == list1[item].name;
})[0] || false;
if(match)
list1[item].id = match.id;
}

console.log(list1);


为了响应您的请求,我 tested both of ours on JSFiddle并意识到我的速度慢(0.3799999999999386ms 而不是 0.07999999999998408ms,根据 performance.now())。糟糕。

您的工作正常,并且可能尽可能简单明了。我会说坚持下去。

关于javascript - 比较 2 个数组以查看对象是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38133588/

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