【发布时间】:2016-12-28 16:53:16
【问题描述】:
我有两个 JavaScript 数组 orig(原始对象数组)和 update(更新后的原始对象数组),它们具有相同的长度并包含对象,我想输出每对之间的差异对象。
例子:
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) }
}
}
【问题讨论】:
-
输出是字符串还是对象?或者一个带有对象或字符串的数组,或者?
-
虽然我不知道您的用例,但对我来说,只有一个已更改值的列表似乎没有用,而不知道更改值存在于哪个键和哪个对象中;你确定你不需要更多细节吗?我并不是要贬低您的问题,而是要预测您的下一个问题可能是什么,如果您只需要更改的值是错误的。
-
我只需要该输出来创建一个字符串文本,上面写着:“嘿,你将 Obj2 更改为 Obj2-updated”。但我只需要知道修改了哪个属性。
-
@NinaScholz 输出是字符串还是对象都没关系。
-
我投票结束这个问题,因为对于那些试图回答的人来说,它是一个不断变化的目标。在问一个问题之前,先花点时间弄清楚你到底想要什么。检查您发布的输入是否准确(要比较的对象数组,而不仅仅是两个不同的对象),并且您知道需要什么结果,无论是更改值,更改值 和 i> 该值的键,或具有更改值的整个对象;十分钟可以为所有人节省时间。
标签: javascript arrays javascript-objects difference data-manipulation