javaScript合并對象的多種方式及知識擴展
1、方式一:Object.assign(obj1, obj2, …)
參數(shù)1:obj1 是目標(biāo)對象
參數(shù)2:obj2 是源對象注意:對象與對象之間,同名屬性,會被后面對象的屬性值所覆蓋
const obj1 = { a: 1, b: 2, } const obj2 = { b: 3, c: 4, } const result = Object.assign(obj1, obj2) console.log(result) // {a: 1, b: 3, c: 4}
2、方式二:es6 新增語法,擴展運算符 … 【三點】
{…obj1, …obj2}
注意:對象與對象之間,同名屬性,會被后面對象的屬性值所覆蓋
const obj1 = { a: 1, b: 2, } const obj2 = { b: 3, c: 4, } const result = {...obj1, ...obj2} // 返回一個新的對象。 console.log(result) // {a: 1, b: 3, c: 4} // 順帶一提, 數(shù)組之間的合并,也可以使用 擴展運算符 . // 如: [...arr1, ...arr2]
知識擴展:
擴展運算符 … 【三點】,也可以用于 數(shù)組與數(shù)組之間的合并。
不同的是:
數(shù)組之間 只會合并,就算是相同的值,也不會覆蓋。(這是不同于對象的地方。)
let arr1 = [1,2,4] let arr2 = [4,5,6] let arr3 = [...arr1, ...arr2] console.log(arr3) // [1, 2, 4, 4, 5, 6]
最后需要提醒的是,在合并對象時如果鍵值相同的對象屬性類型不同,例如一個為字符串類型,一個為數(shù)值類型,會覆蓋之前的屬性,因此需要根據(jù)項目需求做出相應(yīng)的處理。
此外,如果需要對合并對象的屬性進(jìn)行特殊處理,例如合并對象的屬性值是一個數(shù)組,需要合并成一個新數(shù)組,可以使用 Array.concat() 方法。
const obj1 = { a: [1, 2] }; const obj2 = { a: [3, 4] }; const obj3 = Object.assign({}, obj1, { a: obj1.a.concat(obj2.a) }); console.log(obj3); // { a: [1, 2, 3, 4] }
或者使用擴展運算符
const obj1 = { a: [1, 2] }; const obj2 = { a: [3, 4] }; const obj3 = {...obj1, a: [...obj1.a, ...obj2.a]} console.log(obj3); // { a: [1, 2, 3, 4] }
此外,如果需要對合并對象的屬性值進(jìn)行進(jìn)一步的處理,如去重、排序等,可以使用 Array.filter()、Array.sort() 等方法。
總結(jié):
到此這篇關(guān)于javaScript合并對象的多種方式及知識擴展的文章就介紹到這了,更多相關(guān)js合并對象方式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript Event學(xué)習(xí)第二章 Event瀏覽器兼容性
在這一章我將對重要的事件做一個概述,包括一些流行的瀏覽器的兼容性問題。2010-02-02JavaScript中string轉(zhuǎn)換成number介紹
這篇文章主要介紹了JavaScript中string轉(zhuǎn)換成number介紹,本文講解了3種將string值轉(zhuǎn)換成number的方法,需要的朋友可以參考下2014-12-12layer.msg()去掉默認(rèn)時間,實現(xiàn)手動關(guān)閉的方法
今天小編就為大家分享一篇layer.msg()去掉默認(rèn)時間,實現(xiàn)手動關(guān)閉的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09微信小程序 JS動態(tài)修改樣式的實現(xiàn)代碼
這篇文章主要介紹了微信小程序 JS動態(tài)修改樣式的實現(xiàn)代碼,原理是綁定數(shù)據(jù),然后動態(tài)的修改數(shù)據(jù),從而實現(xiàn)動態(tài)樣式的改變而已,需要的朋友可以參考下2017-02-02