我解決了一個問題,其中的任務是從輸入數組中合併多個對象,並返回合併了所有鍵和值的單個對象。如果輸入數組中有一個或多個對象存在密鑰,則該密鑰的最新值應存儲在最終返回的對象中。如何在數組和對象上一起使用JavaScript擴展語法?
一個例子 -
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'}
,因爲這是最新的。
我想在此問題中使用spread syntax作爲對象,但只解決了其中的一部分。我的意思是,如果我使用傳播的每個單獨的對象,這樣的作品,像 -
function foo() {
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'},
arr = [a,b,c];
return {...arr[0], ...arr[1], ...arr[2]}
}
console.log(foo());
對於這項工作,我需要寫出來與傳播每個數組元素,如上面的片段 - ...arr[0], ...arr[1], ...arr[2]
。但是,輸入數組可以包含任意數量的對象,因此寫出每個元素是不可行的。
通常情況下,使用像數組中的迭代傳播,可以讓你展開數組元素,如所謂
var parts = ['shoulders', 'knees'];
var lyrics = ['head', ...parts, 'and', 'toes'];
console.log(lyrics)
是否有可能使用傳播輸入陣列上收集所有可以再次應用傳播的單個對象來獲得最終對象?