数组1是本地存储中数据的结果
数组2是对于相同的ID(329,307,355),处理后的结果
所以我需要比较两者以通知发生了什么变化
数组 1:
[{"329":["45738","45737","45736"]},{"307":["45467","45468"]},{"355":["47921"]}]
数组 2:
[{"355":["47921","45922"]},{"329":["45738","45737","45736"]},{"307":[]}]
我需要将数组 2 与数组 1 进行比较并提取差异。
在这个例子中我想要结果
[{"355":["45922"]},{"307":[]}]
我尝试修改此代码:
var compareJSON = function(obj1, obj2) {
var ret = {};
for(var i in obj2) {
if(!obj1.hasOwnProperty(i) || obj2[i] !== obj1[i]) {
ret[i] = obj2[i];
}
}
return ret;
};
可运行:
var array1 = [{
"329": ["45738", "45737", "45736"]
}, {
"307": ["45467", "45468"]
}, {
"355": ["47921"]
}],
array2 = [{
"355": ["47921", "45922"]
}, {
"329": ["45738", "45737", "45736"]
}, {
"307": []
}]
var compareJSON = function(obj1, obj2) {
var ret = {};
for (var i in obj2) {
if (!obj1.hasOwnProperty(i) || obj2[i] !== obj1[i]) {
ret[i] = obj2[i];
}
}
return ret;
};
console.log(compareJSON(array1, array2));
但是,要么我什么都没有,要么我拥有整张 table
最佳答案
您的要求(结果)尚不清楚,但这将帮助您开始。
var arr1 = [{ "329": ["45738", "45737", "45736"] }, { "307": ["45467", "45468"] }, { "355": ["47921"] }],
arr2 = [{ "355": ["47921", "45922"] }, { "329": ["45738", "45737", "45736"] }, { "307": [] }];
var result = [];
arr2.forEach(obj => {
var key = Object.keys(obj)[0];
var match = arr1.find(o => o.hasOwnProperty(key));
if (match) {
var newObj = {};
newObj[key] = obj[key].filter(s => match[key].indexOf(s) === -1);
if (!obj[key].length || newObj[key].length) result.push(newObj)
} else {
result.push(Object.assign({}, obj));
}
});
console.log(result);
关于javascript - 在 JavaScript 中比较 2 个数组并提取差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43744988/