簡體   English   中英

如何在 javascript 中的純 function 中更新 object?

[英]How do you update an object in a pure function in javascript?

我試圖找出依賴於更新 object 的 function 純的最佳方法。 是做深拷貝的唯一方法嗎?

我知道關於如何復制 object 的問題在這里得到了很多解答。 我問是否有另一種方法來保持這個 function 純凈:

function changeId(item: ObjectWithId): ObjectWithId {
  // Not pure
  item.id = 1;
  return item;
}

唯一的方法是深拷貝嗎?

function changeId(item: ObjectWithId): ObjectWithId {
  const newItem = deepCopy(item);
  newItem.id = 1;
  return newItem;
}

標准是使用擴展運算符

function changeId(item: ObjectWithId): ObjectWithId {
  return { ...item, id: 1 };
}

它將所有屬性復制到一個新的 object 並且您可以擁有一個屬性覆蓋列表。

您不需要深拷貝,因為您沒有改變原始輸入,即使屬性是對象,如果您沒有改變它們,您也可以將它們作為新 object 上的屬性重用。

如果要更改 object 屬性,可以為該屬性創建新對象

{
  ...originalObject,
  changedProperty: { ...originalObject.changedProperty, propertyToChange: newValue }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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