我想通过localStorage保存一个由多个JS对象组成的数组。LocalStorage保存并加载JS对象
我想我遇到的问题与Fail when pushing an array of js objects to localStorage and then retrieving it and parsing相同,但是没有解决方法。
var featureArray=[];
map.on('click', function(evt) {
if (feature) {
featureArray.push(feature.values_);
}
});
function saveFeatures() {
localStorage.setItem('features', featureArray);
}
saveFeatures();
当我尝试通过localStorage.getItem('features')
输出加载它们是一样的东西:
[object Object],[object Object]
但其实我是想这样的结构背后的值进行保存。
我试过localStorage.setItem('features', JSON.stringify(featureArray))
,但引发错误
TypeError: Converting circular structure to JSON
我在做什么错?
的console.log(featureArray)的输出:
(2) [{…}, {…}]
0:
geometry:ol.geom.MultiPolygon {pendingRemovals_: {…}, dispatching_: {…}, listeners_: {…}, revision_: 2, ol_uid: 39, …}
krs:"Niedersachsen"
sumarea_1_2014:20298
sumarea_1_2015:16045
sumarea_1_2016:19008
sumarea_3_2014:3888
sumarea_3_2015:27971
sumarea_3_2016:15520
sumarea_5_2014:11888
sumarea_5_2015:14671
sumarea_5_2016:31307
__proto__:Object
1:
geometry:ol.geom.MultiPolygon {pendingRemovals_: {…}, dispatching_: {…}, listeners_: {…}, revision_: 2, ol_uid: 41, …}
krs:"Nordrhein-Westfalen"
sumarea_1_2014:23100
sumarea_1_2015:2399
sumarea_1_2016:21916
sumarea_3_2014:11375
sumarea_3_2015:31563
sumarea_3_2016:20300
sumarea_5_2014:859
sumarea_5_2015:20633
sumarea_5_2016:31101
__proto__:Object
length:2
__proto__:Array(0)
UPDATE:https://jsfiddle.net/ytc26fju/3/。将鼠标悬停在点上以更新阵列。然后点击保存,然后点击加载按钮。
你试过JSON.parse(localStorage.getItem('features'))吗? 也看看: https://stackoverflow.com/questions/11616630/json-stringify-avoid-typeerror-converting-circular-structure-to-json – user1338871
JSON解析/字符串化...localStorage只能存储字符串 –
featureArrays的类型是什么? – Steven