Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在数组和对象上同时使用JavaScript扩展语法?_Javascript_Arrays_Object_Ecmascript 6 - Fatal编程技术网

如何在数组和对象上同时使用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);