【发布时间】:2017-02-16 18:30:38
【问题描述】:
我有 2 个深层嵌套对象。一个是“基础”对象,另一个是修改后的对象。
我本质上想从修改后的对象中“删除”基础对象并返回一个只包含不同数据的对象。这是一个例子:
基础对象:
baseObj : {
image: {
width: '100%',
paddingTop: '0px',
paddingRight: '0px',
paddingBottom: '0px',
paddingLeft: '0px'
},
wrap: {
marginTop: '0px',
marginRight: '0px',
marginBottom: '0px',
marginLeft: '0px'
}
}
具有修改数据的对象
mergedObject : {
image: {
width: '100%',
paddingTop: '0px',
paddingRight: '24px', // modified value
paddingBottom: '24px', // modified value
paddingLeft: '0px'
},
wrap: {
height: '100px', // new value
marginTop: '24px', // modified value
marginRight: '0px',
marginBottom: '0px',
marginLeft: '24px' // modified value
}
}
我想要一个像这样返回的对象:
diffObject : {
image: {
paddingRight: '24px',
paddingBottom: '24px',
},
wrap: {
height: '100px',
marginTop: '24px',
marginLeft: '24px'
}
}
嵌套可以更深一些,所以它需要是动态的。有没有使用 lodash 或其他库的方法?
【问题讨论】:
-
谢谢。我在该页面上找到了一个 jsfiddle:jsfiddle.net/drzaus/9g5qoxwj 它几乎可以满足我的需求。但是它返回空对象,例如: "diff(a, b) = " {"x":4,"z":{},"zz":{"a":1,"b":2}} "diff(a, b) = " {"x":56,"z":{},"zz":{"a":2,"b":1}}。如果我能找到删除 z:{} 值的方法,那就完美了
标签: javascript node.js lodash javascript-objects