![](/img/trans.png)
[英]How hashtable makes sure object keys are hashed into a unique index in JavaScript
[英]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.