localStorage.getItem(key)
会返回您提供的键的数据。localStorage中的数据被序列化,因此您需要使用JSON.parse(data)
将其解析为普通JS对象,然后可以像处理任何其他对象一样处理它。
您只能使用localStorage.getItem
获取单个项目,因此如果要在数组中获取多个项目,则必须循环并逐个获取每个项目并将它们放入数组中。
也许可以尝试以下代码:
var keys = Object.keys(localStorage).filter(function(key) {
return /^section\d+$/.test(key);
});
var dataArray = keys.map(function(key) {
return JSON.parse(localStorage.getItem(key));
});
首先,我们使用filter
函数获取所有以 "section###" 为键的数据。接着使用map
函数创建一个新数组,其中包含每个对应项的数据。
/^section\d+$/.test(key);
,在控制台中它显示了10个true和2个false。请问你能指导我如何将它们分别放入每个数组中,以便我可以进一步使用它们吗? - user2828442filter
函数的条件,因此keys
数组仅包含您的“section###”键,以便在获取和解析所有这些项目的数据时使用。 - Lennholmconsole.log(dataArray.title);
无法工作。 - user2828442
var keys = [];
var data = [];
for (var key in localStorage) {
if (key.indexOf("section") > -1)
keys.push(key);
}
for (var i in keys) {
data.push(localStorage.getItem(keys[i]))
}
for
循环是完全同步的。 - Lennholmfor
循环内部放置setTimeout()
来实现这一点。无论如何,你在第一个循环中推送数据的建议仍然是好的,因为这种方法只需要一个循环。但是,这个答案中的代码本身就是非常错误的。 - Lennholm