javascript - 检测数组中的元素

标签 javascript

我有两个数组,例如

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/

相关文章:

javascript - sinon.js spy 不会发现错误吗?

javascript - 对于不同的触摸点,touch.identifier值始终为0

javascript - 禁用 jquery-chosen 下拉菜单

javascript - HTML 标签 <em> 仅出现在实时网站上

javascript - 无法在 LocalStorage 中保留单选按钮值

javascript - 绕过验证jquery

javascript - 类变化时的 Angular Action

javascript - 带两个括号的 Node Require

javascript - 如何使用扩展语法将数组传递给 JavaScript 中的方法

javascript - Angular : assigning ng-options dynamically, 奇怪的行为