簡體   English   中英

如何在不改變對象的情況下更改對象的屬性?

[英]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"

兩種方式...

  1. 您可以使用Object.assign

     const a = { x: "Hi", y: "Test" } const b = Object.assign({}, a, { x: "Bye" }); console.log(b);

  2. 或者您可以使用對象擴展運算符

    展開運算符允許您將一個對象的所有屬性“分配”給另一個對象。

    我們可以在這里使用一個對象常量內的所有屬性分配ab

     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"};

創建對象的副本並更改副本:

const b = Object.assign({}, a, {x: "Bye"})

Object.assign()文檔

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM