我有两个 JavaScript 数组orig
(原始对象数组)和update
(更新后的对象原始数组)具有相同的长度并包含对象,我想输出每对对象之间的差异。
Example:
var orig = [{enabled:"true", name:"Obj1", id:3},{enabled:"true", name:"Obj2", id:4}];
var update = [{enabled:"true", name:"Obj1", id:3}, {enabled:"true", name:"Obj2-updated", id:4}];
输出应该是:name:"Obj2-updated"
我实现了一些东西,但它需要优化......
for(var prop=0; prop<orig.length; prop++) {
for(prop=0; prop<update.length; prop++) {
if(orig[prop].enabled != update.enabled) { console.log(update.enabled) }
if(orig[prop].name != update[prop].name) { console.log(update[prop].name) }
if(orig[prop].id != update[prop].id) { console.log(update[prop].id) }
}
}
您可以过滤键并获取包含更新键的结果集。
var orig = [{ enabled: "true", name: "Obj1", id: 3 }, { enabled: "true", name: "Obj2", id: 4 }],
update = [{ enabled: "true", name: "Obj1", id: 3 }, { enabled: "true", name: "Obj2-updated", id: 4 }],
difference = [];
orig.forEach(function (a, i) {
Object.keys(a).forEach(function (k) {
if (a[k] !== update[i][k]) {
difference.push({ id: update[i].id, key: k, value: update[i][k], index: i });
}
});
});
console.log(difference);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)