Javascript 在JS(es6)中将对象映射到一起
我在JS中有两个对象:Javascript 在JS(es6)中将对象映射到一起,javascript,object,ecmascript-6,mapping,Javascript,Object,Ecmascript 6,Mapping,我在JS中有两个对象: positions: { top: { top: 10, left: 10 }, bottom: { top: 10, left: 10 }, left: { top: 10, left: 10 }, right: { top: 10, left: 10 }, }, positionAdjustments: { top: { top: 0, left: 0 }, bottom: { top: 5, left: 5 }, left: { top
positions: {
top: { top: 10, left: 10 },
bottom: { top: 10, left: 10 },
left: { top: 10, left: 10 },
right: { top: 10, left: 10 },
},
positionAdjustments: {
top: { top: 0, left: 0 },
bottom: { top: 5, left: 5 },
left: { top: 0, left: 0 },
right: { top: 0, left: 0 },
},
我想将它们结合起来,以产生例如:-
positions: {
top: { top: 10, left: 10 },
bottom: { top: 15, left: 15 },
left: { top: 10, left: 10 },
right: { top: 10, left: 10 },
},
有没有一种lodash方法或某种优雅的方法可以在不编写递归映射函数的情况下实现这一点?例如:
位置。深度组合值(位置调整)代码>
如果您不想使用lodash
,并且在top
和left
对象中只有top
和left
键,则可以使用此选项。可能会改进此方法Y更多您可以迭代关键帧和所需属性,并调整位置
var object={positions:{top:{top:10,left:10},bottom:{top:10,left:10},left:{top:10,left:10},right:{top:10,left:10},positionAdjustments:{top:{top:0,left:0},bottom top:5,left:5},left:{top:0,left:0},right:{top:0,left:0};
Object.key(Object.positions).forEach(函数(k){
['top','left'].forEach(函数(l){
object.positions[k][l]+=(object.positions调整[k]|{}[l]| | 0;
});
})
控制台日志(对象位置)代码>
。作为控制台包装{max height:100%!important;top:0;}
为什么最后一个左
是0
?可能是typo@ozilsry是个打字错误@ManuelCheța也谢谢!也谢谢!我希望lodash能够为这类事情提供内置功能(将对象中的键控值添加到一起),但我认为没有,我猜它太具体了
keys = Object.keys(positions)
const result = keys.map(key => (
{
top: positions[key].top + positionsAdjustments[key].top,
left: positions[key].left + positionsAdjustments[key].left,
}
));