如何在javascript中比较两个对象数组

时间:2014-03-12 12:51:54

标签: javascript

我在javascript中使用了两个对象数组

arr1 = [{"name":"prudhvi", "age":"12"},
        {"name":"pavan", "age":"13"},
        {"name":"prudhvi", "age":"15"}];

arr2 = [{"name":"Sai", "age":"12"},
        {"name":"Shiva", "age":"13"},
        {"name":"prudhvi", "age":"12"}];
  1. 实际上我想比较基于名称的两个阵列。在这里,重复名称prudhvi我想从arr2删除该对象。

  2. 另一件事是我需要arr1中的唯一项目。如果有任何重复的对象,我想从这个数组中删除它。

3 个答案:

答案 0 :(得分:0)

你可以为此创建一个辅助函数,因为数组包含新的Object声明(意味着它们具有相同的值,但不会引用相同的Object,因为它们是两个独立的实体)。您应该迭代数组并查看它是否包含预期值,如果是,则将其删除。像这样:

function removeDuplicateName( aArray, aName )
{
    var i = aArray.length; // get Array length

    while ( i-- )
    {
        var entry = aArray[ i ];   // get object at position i in array
        if ( entry.name == aName ) {   // object matches name
            aArray.splice( i, 1 ); // remove object at array position
            break;                 // if name is expected to unique, break operation
        }
    }
}

答案 1 :(得分:0)

你可以使用像...这样的帮助功能。

function compareObjs( obj1, obj2, keys ){


    for(var i = 0; i < keys.length; i++){

        if( obj1[keys[i]] !== obj2[keys[i]] )  return false;

    }

    return !!keys.length;

}

这个函数'll迭代键并返回如果所有都等于... 参见JSFIDDLE - &gt; http://jsfiddle.net/dzkzL/1/

答案 2 :(得分:0)

var diff = $(array1).not(array2).get();

如果diff为null,则您具有相同的数组,否则它将包含差异b / w两个数组