【发布时间】:2016-06-30 21:29:26
【问题描述】:
数组 1 = [对象]
数组 2 = [对象,对象]
假设在 array 1 中的对象是:
{
'name': 'apple',
'id': ''
}
在数组 2 中:
对象1:
{
'name': 'bananna',
'id': 2
}
对象 2:
{
'name': 'apple',
'id': 1
}
我想看看数组1中的对象是否在数组2中,如果是,将array1的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})
注意:需要此功能适用于所有浏览器。
【问题讨论】:
-
那个流浪的美元符号在那里做什么?
-
您正在检查相等的索引......也就是说,您正在检查 array1 的第一个元素是否与 array2 的第一个元素具有相同的名称。然后您将检查第二个元素是否与第二个元素匹配,依此类推。
-
@JimNastos 是的,我意识到了,所以我该如何解决它,因为我的方法是错误的。索引可以不同
-
正如 Jim 所说,您需要两个嵌套循环,而不是一个循环。对于 A 中的每个元素,您需要将其与 B 中的每个元素进行比较。
-
@JosephYoung 喜欢这样吗?
标签: javascript arrays underscore.js javascript-objects