我有两个数组,例如
var array1 = [
{
id: '1',
name: 'test'
},
{
id: '2',
name: 'test2'
},
{
id: '3',
name: 'test3'
}
]
var array2=[
{
id: '2',
name: 'test2'
}
]
我想循环遍历数组 1 并找到相同的对象并在数组 1 中添加更多属性
我有类似的东西
for(var i=0; i < array1.length; i++) {
if(array2[i].id == array1[i].id){
alert('find!')
}
}
我知道我的上述代码不起作用,因为索引不同。有人可以帮我解决这个问题吗?非常感谢!
最佳答案
是时候推出ECMA5了
var array1 = [
{
id: '1',
name: 'test',
foo: {
bar: 'bar',
quux: 'quux'
}
},
{
id: '2',
name: 'test2'
},
{
id: '3',
name: 'test3'
}
];
function equal(objA, objB) {
if(Object.keys(objA).length !== Object.keys(objB).length) {
return false;
}
var areEqual = Object.keys(objA).every(function(key) {
if(typeof objA[key] === "object") {
return equal(objA[key], objB[key]);
}
return objA[key] === objB[key];
});
return areEqual;
}
function hasElement(array, element) {
return array.some(function(el) {
return equal(el, element);
});
}
console.log(hasElement(array1, {
id: '1',
name: 'test',
foo: {
bar: 'bar',
quux: 'quux'
}
}));
关于javascript - 检测数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24563837/