我在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
中的唯一项目。如果有任何重复的对象,我想从这个数组中删除它。
答案 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两个数组