簡體   English   中英

具有負數組索引和大數組索引的變量的值不會保存在本地存儲中

[英]Values of variables with negative and big array indexes does not save in local storage

我有不常見的數組索引變量。 在這里是: 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對象上的數組索引 1進行序列化,並丟棄所有其他屬性。 解決方案很簡單-當您不應該使用數組時不要使用數組:

var MapCellData = {}; // instead of []
MapCellData[weirdProperty] = …;

考慮到“數組”的稀疏程度,這在JSON中也將更加節省空間。

1:第6.1.7節,第9.4.2節 :數組索引是一個字符串值的屬性鍵,它是規范的數字字符串,其數值i在+0≤i <232-1范圍內。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM