gpt4 book ai didi

javascript - 获取和设置 localStorage 数组中的对象值

转载 作者:行者123 更新时间:2023-12-03 07:16:17 25 4
gpt4 key购买 nike

我正在尝试将对象设置为 localStorage,其格式类似于以下内容:

[{"1":{"property1":false,"property2":false}},{"2":{"property1":false,"property2":false}}]

我可以根据从 REST 调用获取的动态值设置 12。到目前为止我所拥有的是:

// check if session exists and create if not
var StorageObject = JSON.parse(localStorage.getItem("session")) || [];

//see if the current id from the REST call is in storage and push with properties if not
if ( !StorageObject[thisItemsListID] ) {
var itemProperties = {};
itemProperties[thisItemsListID] = {};
itemProperties[thisItemsListID]["property1"] = false;
itemProperties[thisItemsListID]["property2"] = false;

StorageObject.push(itemProperties);
localStorage.setItem('session', JSON.stringify(StorageObject));
}

我可以使用这种格式将数据存入 localStorage,但是 StorageObject[thisItemsListID] 总是进入 if 语句并在 localStorage 中生成重复的项目,我不知道如何使用多变的。如果新 ID 不存在,我会尝试追加该 ID,因此如果 {1:{} 存在但当前 ID 为 2,我需要推送新值。

我已经接近这里了,也许我需要重新评估我存储数据字符串的格式,但我在这里兜圈子,可以使用正确方向的点。

最佳答案

嗯,重复的项目发生在 StorageObject.push(itemProperties) 中。

尝试更新对象:

//StorageObject.push(itemProperties); <-- remove
StorageObject[thisItemsListID] = itemProperties;

[编辑]

如果你想保留[{"1":{"property1":false,"property2":false}},{"2":{"property1":false,"property2":false} }]。有条件的会有点不同。

var haveItem = StorageObject.filter(function(item){
return Objects.keys(item)[0] == thisItemsListID;
}).length > 0;


if ( !haveItem ) {
var itemProperties = {};
itemProperties[thisItemsListID] = {};
itemProperties[thisItemsListID]["property1"] = false;
itemProperties[thisItemsListID]["property2"] = false;

StorageObject.push(itemProperties);
localStorage.setItem('session', JSON.stringify(StorageObject));
}

关于javascript - 获取和设置 localStorage 数组中的对象值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36408947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com