我有两个数组与对象,如arr1和arr2,我想分开重复的项目和原始项目。我的意思是,从arr1开始,无论项目是否与arr2匹配,那么这些项目[来自arr1]都被视为重复项目。如果它不匹配,那么它就是原始物品。如何比较两个对象数组中的重复javascript
我做了以下程序,但它很未按预期
arr1 = [{name: "sunrise.jpg"},{name: "nature.jpg"},{name:"sunflower.jpg"}, {name: "sunset.jpg"}];
arr2 = [{
"@type" : "Image",
"objectTypeId" : "Image",
"baseTypeId" : "document",
"name" : "sunrise.jpg",
"width" : "284",
"height" : "177"
}, {
"@type" : "Image",
"objectTypeId" : "Image",
"baseTypeId" : "document",
"name" : "Lao Tzu",
"width" : "638",
"height" : "960"
}, {
"@type" : "Image",
"objectTypeId" : "Image",
"baseTypeId" : "document",
"name" : "nature.jpg",
"width" : "300",
"height" : "168"
}, {
"@type" : "Image",
"objectTypeId" : "Image",
"baseTypeId" : "document",
"name" : "replay_12",
"width" : "500",
"height" : "717"
}, {
"@type" : "Image",
"objectTypeId" : "Image",
"baseTypeId" : "document",
"name" : "sunflower.jpg",
"width" : "300",
"height" : "168"
}
];
var originalItems = [];
var diff = function(arr1, arr2) {
var dupes = [];
for(var i in arr1) {
//console.log(i);
for(var j in arr2){
if(arr1[i].name === arr2[j].name){
dupes.push(arr2[j]);
} else {
originalItems.push(arr2[j]);
}
}
}
return dupes;
}
var sd = diff(arr1, arr2);
console.log(sd);
console.log(originalItems);
在这里,原来的项目有“sunset.jpg”和其他被移动到“愚弄”。
我错过了这里的任何线索,请问?
你有什么期望从上面的例子的结果? –
我坚持复制和粘贴你的代码在jsfiddle中,结果不是你说的。我得到愚蠢=日出,自然,向日葵;其余的在原件。我什么也没做,只是复制并粘贴 – lascort
@Kinduser实际上,你是对的,它不工作,“originalItems”数组包含所有项目。但结果绝对不是问题所在。但是,是的,我的坏 – lascort