如何將多個對象合並為一個對象


一、Object.assign()

 Object.assign() 方法用於將所有可枚舉屬性的值從一個或多個源對象復制到目標對象。它將返回目標對象。 並且源對象也會被修改。

  const target = { a: 1, b: 2 };   const source = { b: 4, c: 5 };   const returnedTarget = Object.assign(target, source);   console.log(target);   // expected output: Object { a: 1, b: 4, c: 5 }
   console.log(returnedTarget);   // expected output: Object { a: 1, b: 4, c: 5 }

 

如果目標對象中的屬性具有相同的鍵,則屬性將被源對象中的屬性覆蓋。后面的源對象的屬性將類似地覆蓋前面的源對象的屬性。支持多個對象合並,如果不想修改目標對象,可以將目標對象改成空 {},

例如:const returnedTarget = Object.assign( {} , source,source);

Object.assign 方法只會拷貝源對象自身的並且可枚舉的屬性到目標對象。該方法使用源對象的[[Get]]和目標對象的[[Set]],所以它會調用相關 getter 和 setter。因此,它分配屬性,而不僅僅是復制或定義新的屬性。如果合並源包含getter,這可能使其不適合將新屬性合並到原型中。為了將屬性定義(包括其可枚舉性)復制到原型,應使用Object.getOwnPropertyDescriptor()Object.defineProperty() 。

String類型和 Symbol 類型的屬性都會被拷貝。

在出現錯誤的情況下,例如,如果屬性不可寫,會引發TypeError,如果在引發錯誤之前添加了任何屬性,則可以更改target對象。

注意,Object.assign 不會在那些source對象值為 null 或 undefined 的時候拋出錯誤。

 

二、采用循環遍歷

這種就稍微麻煩一點了

var obj1 = {name:'張三'}; var obj2 = {age:18}; for (var key in obj2) {  if (obj2.hasOwnProperty(key) === true){ // 確保不是 obj2 的原型屬性    obj1[key] = obj2[key];   } } console.log(obj1);

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM