Lodash中數組和對象合併方法assign、merge、defaults、defaultsDeep比較

例子

_.assign(object, [sources])

分配來源對象的可枚舉屬性到目標對象上。 來源對象的應用規則是從左到右,隨後的下一個對象的屬性會覆蓋上一個對象的屬性。
在這裏插入圖片描述

_.merge(object, [sources])

該方法類似 _.assign, 除了它遞歸合併 sources 來源對象自身和繼承的可枚舉屬性到 object 目標對象。如果目標值存在,被解析爲undefined的sources 來源對象屬性將被跳過。數組和普通對象會遞歸合併,其他對象和值會被直接分配覆蓋。源對象從從左到右分配。後續的來源對象屬性會覆蓋之前分配的屬性。
在這裏插入圖片描述

_.defaults(object, [sources])

分配來源對象的可枚舉屬性到目標對象所有解析爲 undefined 的屬性上。 來源對象從左到右應用。 一旦設置了相同屬性的值,後續的將被忽略掉。
在這裏插入圖片描述

_.defaultsDeep(object, [sources])

這個方法類似 _.defaults,除了它會遞歸分配默認屬性。
在這裏插入圖片描述

總結

assign:後面的會覆蓋前面的對象屬性,不會遞歸遍歷。
merge: 後面的會覆蓋前面的對象屬性,會遞歸遍歷。
defaults:前面的屬性不爲undefined且與後面屬性名相同,後面的對象屬性會被忽略,不會遞歸遍歷。
defaultsDeep: 前面的屬性不爲undefined且與後面屬性名相同,後面的對象屬性會被忽略,會遞歸遍歷。

assign和merge的關係就相當於defaults和defaultsDeep的關係。只不過參數順序是相反的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章