【发布时间】:2015-11-30 22:46:31
【问题描述】:
我有不常见数组索引的变量。这里是: http://i.imgur.com/01nH8x5.png
所以,我将它保存到本地存储中:
function Save(){
var save = {
//<...>
MapCellData: MapCellData,
MapCellDataE: MapCellDataE
//<...>
};
localStorage.setItem("save",JSON.stringify(save));
}
window.setInterval(function(){
Save()
}, 10000); // Autosave every 10 sec
然后我进入 Firebug 控制台并通过输入以下命令检查保存了哪些元素:
JSON.parse(localStorage.getItem("save"));
这是我得到的:http://i.imgur.com/vva3mBk.png
如您所见,所有具有负索引和大索引的变量的值都变得未定义,而从 0 到 4 的索引被正确保存。
注意:MapCellData 是变量,它决定将哪个图像应用于表格单元格,而 MapCellDataE 是变量,它决定单元格背景颜色。这两个变量都有相同的索引,所以它们都有相同的问题。没有那么奇怪索引的变量可以正确保存。
这就是它的外观。
在我重新加载页面之前:http://i.imgur.com/B3FSu5e.png
我重新加载页面后:http://i.imgur.com/rhkZAa1.png
【问题讨论】:
-
什么是“不常见的数组索引”?您的代码没有显示任何数组。
-
是的,
JSON.stringify仅序列化Array对象上的数组索引,并丢弃所有其他属性。解决方法很简单:shouldn't be using them 时不要使用数组。 -
索引显示在第一张图片(Firebug DOM)上。它是带有负数的索引和带有非常大数字的索引。
-
definition,数组索引是正整数。
-
但是,在我尝试将变量保存到本地存储之前,一切正常。它也没有解释为什么大数组索引也不能保存。
标签: javascript arrays local-storage negative-number