簡體   English   中英

如何確保 Array 具有僅具有唯一鍵的對象項

[英]How to make sure Array has object items only with unique keys

我正在創建一個在線商店。 產品具有屬性(在這種情況下,iMac 計算機具有以下屬性:容量、USB 功能和數字鍵盤。)我將這些屬性存儲在我的狀態中。 在此處輸入圖片說明

問題是,例如,每次我從 256GB 容量切換到 512GB 容量時,它都會向數組添加一個全新的對象{capacity:"512GB"}

如何配置我的處理程序函數(下面的代碼),以便它有條件地檢查數組中的對象是否已經具有“容量”鍵,並將其更新為新選擇,而不是添加另一個對象? 我什么都試過了,我很絕望

處理程序接收帶有鍵值對的對象、鍵(作為label )本身和類型。 在這種情況下,可以忽略類型。

const handleAttributeChange = (object, type, label) => {
      if (type == "text") {
        this.setState({
          selectedAttributes: {
            id: id,
            text: [...this.state.selectedAttributes.text, object],
            swatch: this.state.selectedAttributes.swatch,
          },
        });
      } else if ((type = "swatch")) {
        this.setState({
          selectedAttributes: {
            id: id,
            text: this.state.selectedAttributes.text,
            swatch: [...this.state.selectedAttributes.swatch, object],
          },
        });
      }
    };

您可以使用具有 diff 鍵值的對象來代替數組。 如果鍵是唯一的。 稍后您可以將其轉換為值列表。

 let obj = {}; const update = (o) => { obj = { ...obj, ...o }; }; console.log(obj); update({ a: 1 }); update({ b: 2 }); console.log(obj); // { a: 1, b: 2 } update({ a: 3 }); console.log(obj); // { a: 3, b: 2 } console.log(Object.entries(obj).map(([key, value]) => ({ [key]: value }))); //[ { a: 3 }, { b: 2 } ]

暫無
暫無

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

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