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

Javascript将localStorage getItem字符串转换为数组,javascript,arrays,Javascript,Arrays,我有一个图像库,我正在使用以下方式将图像名称存储到localstorage中: var user_selected_images = JSON.stringify(output); localStorage.setItem('selectedFiles', user_selected_images); 单击库中的图像时,我想检查阵列中是否存在该图像 var selFiles = localStorage.getItem('selectedFiles'); var selFiles = JSON

我有一个图像库,我正在使用以下方式将图像名称存储到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"]
var output = '["STAR_SPORTS-00001.jpg","STAR_SPORTS-00002.jpg"]';

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

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

var输出=[“STAR\u SPORTS-00001.jpg”,“STAR\u SPORTS-00002.jpg”]
var user_selected_images=JSON.stringify(输出);
var selFiles=用户选择的图像;
var selFiles=JSON.parse(selFiles);
控制台日志(自文件类型);

console.log(Array.isArray(selFiles))这是不可能的,它必须返回
对象
而不是
字符串
。请参阅下面的测试。还可以使用
Array.isArray()
对其进行测试:

var输出=[“STAR\u SPORTS-00001.jpg”,“STAR\u SPORTS-00002.jpg”]
var user_selected_images=JSON.stringify(输出);
var selFiles=用户选择的图像;
var selFiles=JSON.parse(selFiles);
控制台日志(自文件类型);

console.log(Array.isArray(selFiles))
您确定您的
输出
变量不是字符串吗?如果我像这样初始化
输出

var output = ["STAR_SPORTS-00001.jpg","STAR_SPORTS-00002.jpg"];
console.log(selFiles的类型)
按预期返回
object

然后我初始化
输出
,如下所示:

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

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

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

var output = ["STAR_SPORTS-00001.jpg","STAR_SPORTS-00002.jpg"];
console.log(selFiles的类型)
按预期返回
object

然后我初始化
输出
,如下所示:

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

console.log(typeof selFiles)
返回一个与您遇到的问题类似的字符串。

听起来不太可能。如果我执行
var输出=[“STAR_SPORTS-00001.jpg”,“STAR_SPORTS-00002.jpg”],我就会得到一个数组;用户所选图片=JSON.stringify(输出);日志(用户选择的图像);var selFiles=JSON.parse(用户选择的图片);log(typeof selFiles,selFiles)
你能不能把一些东西记录下来,也许有一个错误只有在
输出
已经是一个严格定义的JSON时才会发生。你能不能试着不把它字符串化并按原样存储。请用你的确切答案更新这个问题。我想
output
已经是一个JSON字符串了。。。所以这一行是不必要的
JSON.stringify(输出)。。。。。。。。。。。。。尝试
localStorage.setItem('selectedFiles',output)
@PranavCBalan最好先做
console.log(输出类型)
,听起来不太可能。如果我执行
var输出=[“STAR_SPORTS-00001.jpg”,“STAR_SPORTS-00002.jpg”],我就会得到一个数组;用户所选图片=JSON.stringify(输出);日志(用户选择的图像);var selFiles=JSON.parse(用户选择的图片);log(typeof selFiles,selFiles)
你能不能把一些东西记录下来,也许有一个错误只有在
输出
已经是一个严格定义的JSON时才会发生。你能不能试着不把它字符串化并按原样存储。请用你的确切答案更新这个问题。我想
output
已经是一个JSON字符串了。。。所以这一行是不必要的
JSON.stringify(输出)。。。。。。。。。。。。。尝试
localStorage.setItem('selectedFiles',output)
@PranavCBalan最好先做
console.log(输出类型)