JavaScript中合并Object的三種基本方法小結(jié)
在開(kāi)發(fā)過(guò)程中,我們經(jīng)常會(huì)遇到合并對(duì)象的需求,今天我們就來(lái)了解一下合并對(duì)象的幾種基本方法。
Object.assign()
Object.assign()
方法可以將一個(gè)或多個(gè)源對(duì)象的屬性復(fù)制到目標(biāo)對(duì)象中。如果源對(duì)象有自己的屬性,那么它們的值將被保留。
const o1 = { a: 1, b: 1, c: 1 }; const o2 = { b: 2, c: 2 }; const o3 = { c: 3 }; const obj = Object.assign({}, o1, o2, o3); console.log(obj); // { a: 1, b: 2, c: 3 }
Object.assign()
是淺拷貝,如果源對(duì)象中有值的引用,合并后在目標(biāo)對(duì)象中修改值引用,同時(shí)會(huì)修改源對(duì)象的值引用。
const o1 = { a: 1 }; const o2 = { b: { name: "b" } }; const obj = Object.assign({}, o1, o2); obj.b.name = "new_b"; console.log(o2.b); // {name: 'new_b'}
解構(gòu)賦值
使用解構(gòu)賦值可以將對(duì)象的屬性復(fù)制到一個(gè)新的對(duì)象中。
const o1 = { a: 1, b: 1, c: 1 }; const o2 = { b: 2, c: 2 }; const obj = { ...o1, ...o2 }; console.log(obj); // {a: 1, b: 2, c: 2}
可以看出,使用結(jié)構(gòu)賦值合并對(duì)象時(shí),后面對(duì)象的屬性值會(huì)覆蓋前面已有屬性值。
使用遞歸方法
我們可以通過(guò)遞歸的方法將對(duì)象中的嵌套對(duì)象合并到一個(gè)新的對(duì)象中。
/** @format */ function mergeObjects(obj1, obj2) { const mergedObj = Object.assign({}, obj1, obj2); // 遞歸處理嵌套對(duì)象 Object.keys(mergedObj).forEach((key) => { if (typeof mergedObj[key] === "object" && obj1[key] && obj2[key]) { mergedObj[key] = mergeObjects(obj1[key], obj2[key]); } }); return mergedObj; } const obj1 = { a: 1, b: { c: 2, d: 3, e: { name: "e" } } }; const obj2 = { a: 2, b: { c: 3, d: 4, e: { age: 18 } } }; const mergedObj = mergeObjects(obj1, obj2); console.log(mergedObj); // {a:2,b:{c:3,d:4,e:{name:e,age:18}}}
總結(jié)
以上介紹的是合并對(duì)象的三種基本操作,它們也只是簡(jiǎn)化了合并對(duì)象的步驟,在具體使用的時(shí)候,需要根據(jù)場(chǎng)景判斷哪種最合適。
到此這篇關(guān)于JavaScript中合并Object的基本方法小結(jié)的文章就介紹到這了,更多相關(guān)JavaScript Object合并內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript函數(shù)式編程(Functional Programming)箭頭函數(shù)(Arrow functions)
這篇文章主要介紹了JavaScript函數(shù)式編程(Functional Programming)箭頭函數(shù)(Arrow functions)用法,結(jié)合實(shí)例形式分析了javascript函數(shù)式編程中箭頭函數(shù)相關(guān)概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下2019-05-05js簡(jiǎn)單判斷移動(dòng)端系統(tǒng)的方法
這篇文章主要介紹了js簡(jiǎn)單判斷移動(dòng)端系統(tǒng)的方法,通過(guò)JavaScript的navigator.userAgent相關(guān)屬性判斷訪問(wèn)端的系統(tǒng)類(lèi)型,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2016-02-02echarts數(shù)據(jù)可視化實(shí)現(xiàn)多個(gè)柱狀堆疊圖頂部顯示總數(shù)示例
這篇文章主要為大家介紹了echarts實(shí)現(xiàn)多個(gè)柱狀堆疊圖頂部顯示總數(shù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07