Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 浏览器的本地存储无法正常工作_Javascript_Arrays_Json_Local Storage - Fatal编程技术网

Javascript 浏览器的本地存储无法正常工作

Javascript 浏览器的本地存储无法正常工作,javascript,arrays,json,local-storage,Javascript,Arrays,Json,Local Storage,我正在尝试使用浏览器的本地存储来存储阵列,但它无法正常工作。当我测试它时,由于某种原因,它对数组的两个索引都返回“null”。我做错了什么 window.localStorage.clear(); var requesterID = "ABC"; var title = "title"; if (window.localStorage.getItem("alreadyGotLastForAWeek") == null) { window.localStorage.setItem("alread

我正在尝试使用浏览器的本地存储来存储阵列,但它无法正常工作。当我测试它时,由于某种原因,它对数组的两个索引都返回“null”。我做错了什么

window.localStorage.clear();
var requesterID = "ABC";
var title = "title";

if (window.localStorage.getItem("alreadyGotLastForAWeek") == null) {
window.localStorage.setItem("alreadyGotLastForAWeek", JSON.stringify(["placeHolder1"]));
} //end of if (window.localStorage.getItem("alreadyGotLastForAWeek") == null)

window.localStorage.setItem("alreadyGotLastForAWeek", JSON.stringify(JSON.parse(window.localStorage.getItem("alreadyGotLastForAWeek")).push(requesterID+title)));
var tempArray = JSON.parse(window.localStorage.getItem("alreadyGotLastForAWeek"));

console.log(tempArray[0]);
console.log(tempArray[1]);
预期结果:

实际结果:


这是因为
Array.prototype.push
将元素添加到数组中,并且返回数组的新长度,如您所知

您可以拆分您的函数:

const array = JSON.parse(window.localStorage.getItem("alreadyGotLastForAWeek"));
array.push(requesterID+title);
const stringifiedArray = JSON.stringify(array);

window.localStorage.setItem("alreadyGotLastForAWeek", stringifiedArray);
或者您可以使用
Array.prototype.concat
代替
push

window.localStorage.setItem("alreadyGotLastForAWeek", JSON.stringify(JSON.parse(window.localStorage.getItem("alreadyGotLastForAWeek")).concat([requesterID+title])));

这是因为
Array.prototype.push
将元素添加到数组中,并且返回数组的新长度,如您所知

您可以拆分您的函数:

const array = JSON.parse(window.localStorage.getItem("alreadyGotLastForAWeek"));
array.push(requesterID+title);
const stringifiedArray = JSON.stringify(array);

window.localStorage.setItem("alreadyGotLastForAWeek", stringifiedArray);
或者您可以使用
Array.prototype.concat
代替
push

window.localStorage.setItem("alreadyGotLastForAWeek", JSON.stringify(JSON.parse(window.localStorage.getItem("alreadyGotLastForAWeek")).concat([requesterID+title])));

我刚测试过,它在这里工作。如果可能的话,你能提供更多的细节吗?我刚刚将你的代码粘贴到JSFIDLE中,并让它打印出预期的结果。你使用什么浏览器?@A.Meshu谷歌浏览器。有了坦佩尔西,这正是我想要提供的。。。很高兴它能工作(:我刚刚测试并在这里工作。如果可能的话,你能提供更多细节吗?我刚刚将你的代码粘贴到JSFIDLE中,并让它打印出预期的结果。你使用什么浏览器?@A.Meshu Google Chrome.With TamperMonkey.@frosty这正是我想要提供的…很高兴它能工作(:Ohhh.concat非常适合于此。
concat
作为一种魅力,如果您不想修改原始数组,它非常适合(它返回一个新数组而不更改现有数组).但是为了可读性,我建议使用第一种解决方案hhh.concat非常适合这种情况。
concat
可以作为一种魅力,如果您不想修改原始数组(它会返回一个新数组而不更改现有数组),那么它是完美的。但是为了可读性,我建议使用第一种解决方案