Javascript将localStorage getItem字符串转换为数组

时间:2018-02-04 06:41:42

标签: javascript arrays

我有一个图片库,我使用以下方法将图像名称存储到localstorage中:

var user_selected_images = JSON.stringify(output);
localStorage.setItem('selectedFiles', user_selected_images);

单击图库中的图像时,我想检查数组中是否存在图像。

var selFiles = localStorage.getItem('selectedFiles');
var selFiles = JSON.parse(selFiles);

当我尝试评估变量类型时

console.log(typeof selFiles)

我的输出为string。目前我的getItem输出如下所示:

["STAR_SPORTS-00001.jpg","STAR_SPORTS-00002.jpg"]

我尝试使用jQuery.makeArray(selFiles)以及我可以在SO中找到的各种选项,但我的getItem仍然是字符串而不是数组。

2 个答案:

答案 0 :(得分:1)

这是不可能的,它必须返回object而不是string。请参阅下面的测试。还可以使用Array.isArray()对其进行测试:



var output = ["STAR_SPORTS-00001.jpg", "STAR_SPORTS-00002.jpg"]
var user_selected_images = JSON.stringify(output);
var selFiles = user_selected_images;
var selFiles = JSON.parse(selFiles);
console.log(typeof selFiles);
console.log(Array.isArray(selFiles));




也许您的output已经是JSON字符串,在这种情况下,您不应该使用JSON.stringify()。将其直接保存到localStorage

localStorage.setItem('selectedFiles', output);

答案 1 :(得分:1)

您确定output变量不是字符串吗?如果我像这样初始化output

var output = ["STAR_SPORTS-00001.jpg","STAR_SPORTS-00002.jpg"];

console.log(typeof selFiles)按预期返回object

然后我像这样初始化output

var output = '["STAR_SPORTS-00001.jpg","STAR_SPORTS-00002.jpg"]';

console.log(typeof selFiles)会返回一个字符串,就像您遇到的问题一样。