我有一个图片库,我使用以下方法将图像名称存储到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仍然是字符串而不是数组。
答案 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)
会返回一个字符串,就像您遇到的问题一样。