所以我在看一門課程時偶然發現了一種Object.assign()將兩個物件合并在一起的方法。但是由于物件是無序的,我想知道物件的屬性將以什么順序合并。感謝任何好的答案。
uj5u.com熱心網友回復:
后面的來源將從 MDN 從左到右覆寫物件Object.assign:
如果目標物件中的屬性具有相同的鍵,則源物件中的屬性將覆寫它們。后期來源的屬性會覆寫較早的來源。
例如,目標物件中的 id 屬性將在這里被覆寫,因此最終的 id 將作為第二個(源)物件。
const result = Object.assign({ id: 1, foo: 'bar' }, { id: 2 });
console.log(result)
.as-console-wrapper { max-height: 100% !important; }
uj5u.com熱心網友回復:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/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 === target);
// expected output: true
uj5u.com熱心網友回復:
規范是你的朋友。它告訴我們Object.assign從左到右依次獲取每個源物件,列舉這些 [[OwnPropertyKeys]]物件的可列舉物件,并將與每個屬性鍵關聯的值淺拷貝到目標物件上。
物件屬性按以下順序列舉:
- 升序的非負整數樣式屬性
- 創建順序中的所有其他字串屬性
- 創建順序中的符號屬性
但是,通常將物件屬性視為無序是一種很好的做法,如果您需要有序的哈希表型別,請使用Map.
對于 的大多數用途Object.assign,“將最重要的源物件放在右側”可以滿足您的需要。
const result = Object.assign(target, source, moreImportantSource, mostImportantSource)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/522226.html
標籤:javascript目的
上一篇:當我呼叫兩個方法時,一個來自父類,一個來自子類,只有第一個呼叫回傳
下一篇:根據陣列值創建新的物件鍵值對
