[英]How to change a property on an object without mutating it?
const a = {x: "Hi", y: "Test"}
const b = ???
// b = {x: "Bye", y: "Test"}
// a = {x: "Hi", y: "Test"}
如何在不改變 a 的情況下將bx
設置為"Bye"
?
兩種方式...
您可以使用Object.assign
:
const a = { x: "Hi", y: "Test" } const b = Object.assign({}, a, { x: "Bye" }); console.log(b);
或者您可以使用對象擴展運算符。
展開運算符允許您將一個對象的所有屬性“分配”給另一個對象。
我們可以在這里使用一個對象常量內的所有屬性分配a
給b
:
const additions = { x: "Bye" } const a = { x: "Hi", y: "Test" } const b = { ...a, ...additions } console.log(b);
有一種簡單的方法可以在不改變原始對象的情況下更改對象屬性。
const a = {x: "Hi", y: "Test"}; const b = {...a, y: "hello"};
Es6 有一個用於復制對象屬性的內置函數, Object.assign
const b = Object.assign({}, a, {x: 'Bye'})
在這里我們創建一個空對象,將所有a
s 鍵值對推入,然后是我們要覆蓋的新鍵值對。 因為空對象是第一個參數,所以我們改變了那個對象,而不是a
試試這個: const b = a.map(item => Object.assign({}, ...item));
這將創建一個不引用舊對象a
新對象
如果您想對數組執行此操作,請嘗試使用[]
const b = a.map(item => Object.assign([], ...item));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.