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

如何在javascript中比较两个对象数组,javascript,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":

我在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"}];
  • 实际上,我只想基于名称比较两个数组。在这里,名称prudhvi被重复,我想从
    arr2
    中删除该对象

  • 另一件事是我希望在
    arr1
    中有唯一的项目。如果有任何重复的对象,我想将其从此数组中删除


  • 您可以为此创建一个helper函数,因为数组包含新的对象声明(这意味着它们拥有相同的值,但不会引用相同的对象,因为它们是两个独立的实体)。您应该迭代数组,查看它是否包含预期值,如果包含,则删除它。大概是这样的:

    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
            }
        }
    }
    

    您可以使用帮助功能,如

    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;
    
    }
    
    功能比较BJS(obj1、obj2、键){
    对于(变量i=0;i
    此函数将在键中迭代,如果所有键都相等,则返回。。。 请参阅JSFIDLE中的->


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

    搜索您的确切标题会带来很多有用的信息:@jordan,JavaScript,而不是Java。@Andy这是JavaScript,不是Javaissue@PaulRad,我知道。我添加的链接有什么问题?代码中有错误
    if(i.name==aName){
    应该是
    if(entry.name==aName){
    var diff = $(array1).not(array2).get();