如何在数组和对象上同时使用JavaScript扩展语法?
我正在解决一个问题,任务是合并输入数组中的多个对象,并返回一个合并了所有键和值的对象。如果输入数组中的一个或多个对象中存在一个键,则该键的最新值应存储在最终返回的对象中 例如——如何在数组和对象上同时使用JavaScript扩展语法?,javascript,arrays,object,ecmascript-6,Javascript,Arrays,Object,Ecmascript 6,我正在解决一个问题,任务是合并输入数组中的多个对象,并返回一个合并了所有键和值的对象。如果输入数组中的一个或多个对象中存在一个键,则该键的最新值应存储在最终返回的对象中 例如—— var a={1:'1',2:'2',3:'3'}, b={3:'4',5:'6',6:'7',7:'8'}, c={5:'9',8:'9',6:'12',23:'35'} o=[a,b,c]; 返回的对象应为- {'1':'1'、'2':'2'、'3':'4'、'5':'9'、'6':'12
var a={1:'1',2:'2',3:'3'},
b={3:'4',5:'6',6:'7',7:'8'},
c={5:'9',8:'9',6:'12',23:'35'}
o=[a,b,c];
返回的对象应为-
{'1':'1'、'2':'2'、'3':'4'、'5':'9'、'6':'12'、'7':'8'、'8':'9'、'23':'35'}
作为重复键情况的一个示例,键3
存在于对象a
和b
中,因此在最终结果中,值是{3:'4'}
,因为这是最新的
我想在这个问题中使用for对象,但这只能解决部分问题。我的意思是,如果我对每个对象单独使用spread,它会起作用,比如-
函数foo(){
变量a={'1':'1','2':'2','3':'3'},
b={'3':'4','5':'6','6':'7','7':'8'},
c={'5':'9','8':'9','6':'12','23':'35'},
arr=[a,b,c];
返回{…arr[0],…arr[1],…arr[2]}
}
log(foo())代码>您可以使用:
以下是完整的片段:
函数foo(){
变量a={'1':'1','2':'2','3':'3'},
b={'3':'4','5':'6','6':'7','7':'8'},
c={'5':'9','8':'9','6':'12','23':'35'},
arr=[a,b,c];
返回Object.assign(…arr);
}
log(foo())代码>您可以直接在对象上使用扩展语法来合并它们
函数foo(){
变量a={'1':'1','2':'2','3':'3'},
b={'3':'4','5':'6','6':'7','7':'8'},
c={'5':'9','8':'9','6':'12','23':'35'};
返回{…a,…b,…c};
}
log(foo())代码>
return Object.assign(...arr);