在 javascript 中,合并對象有多種方法:淺拷貝(object.assign())副本源對象的第一級屬性;深拷貝(json.parse(json.stringify()))遞歸復制所有屬性;第三方庫(如 lodash)提供高級合并功能(如自定義策略和深拷貝選項)。
JavaScript 中合并對象的技巧
在 JavaScript 中,合并對象是一種常見的操作,用于將多個對象的屬性和值組合成一個新的對象。以下介紹了 JavaScript 中合并對象的三種主要方式:
1. 淺拷貝
淺拷貝只復制源對象的第一級屬性和值到目標對象,而不會復制嵌套的對象或數組。使用 Object.assign() 函數可以實現淺拷貝:
const obj1 = { name: 'John', age: 30 }; const obj2 = { city: 'New York' }; const mergedObj = Object.assign({}, obj1, obj2); // mergedObj: { name: 'John', age: 30, city: 'New York' }
登錄后復制
2. 深拷貝
深拷貝可以復制源對象的所有屬性和值,包括嵌套的對象和數組。可以使用 JSON.parse(JSON.stringify()) 方法實現深拷貝:
const obj1 = { name: 'John', age: 30, address: { street: 'Main St' } }; const obj2 = { city: 'New York' }; const mergedObj = JSON.parse(JSON.stringify(obj1)); // 創建 obj1 的副本 Object.assign(mergedObj, obj2); // 合并 obj2 的屬性 // mergedObj: { name: 'John', age: 30, address: { street: 'Main St' }, city: 'New York' }
登錄后復制
3. 使用庫
也可以使用第三方庫(如 lodash 或 underscore) 來簡化對象合并的過程。這些庫提供了更高級的合并功能,例如自定義合并策略和深拷貝選項。
例如,使用 lodash 中的 _.merge() 函數:
const obj1 = { name: 'John', age: 30 }; const obj2 = { city: 'New York' }; const mergedObj = _.merge(obj1, obj2); // mergedObj: { name: 'John', age: 30, city: 'New York' }
登錄后復制