gpt4 book ai didi

html - 将项目添加/附加到本地存储/网络存储?

转载 作者:行者123 更新时间:2023-11-28 04:06:59 25 4
gpt4 key购买 nike

我知道 localstorage 只是一个带有 getItem and setItem 的简单 HashMap .如果我的 Item 是一个 JSON 数组,而我只想在数组末尾添加一个项目怎么办?有没有比调用 setItem 多一个条目更有效的方法?

最佳答案

很遗憾没有。

localStorage 仅支持 string 类型,因此您必须在保存之前对数组进行 JSON.stringify,这意味着您需要加载它并解析它才能添加任何事情。

您可以编写一个简单的包装器来执行此操作(可以支持各种类型):

function appendItem(key, data) {

var t = data.constructor, tmp;

switch(t) {

case Array:
tmp = localStorage.getItem(key);
tmp = (tmp === null) ? [] : JSON.parse(tmp);
tmp.push(data);

localStorage.setItem(key, JSON.stringify(tmp));
break;

case String:
//... and so forth
}
}

(错误和相同类型检查也必须在这种方法中实现)。

您可以选择使用延迟写入方法,以便更有效地填充数组(突发写入),并且仅在需要时将数据更新到 localStorage。在这里,您可以先加载现有数组,然后在向其中添加数据时更新它。

您可以将其烘焙到每个数组的对象中,但为简单起见:

var a = []; //load existing array at init
var timer;
var key = 'myArray';

//append data to array and re-start timer
function appendArray(item) {

clearTimeout(timer);
a.push(item);

timer = setTimout(writeData, 2000); //wait 2 seconds to write last append(s)
}

//write the data if dirty
function writeData() {
localStorage.setItem(key, JSON.stringify(a));
}

为了安全,您可以订阅 window.onunload 事件,以便在用户离开当前页面时进行最终写入。

关于html - 将项目添加/附加到本地存储/网络存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17356625/

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