我在localStorage中存储了一堆值。带有JSON对象的数组是特定的。当我想向该数组添加另一个对象时,这里是我如何拉,解析,推入数组并再次设置的方法。
var clickedItem = sessionStorage.getItem('location'),
interest = [],
interests = localStorage.getItem('interests');
interestsParsed = JSON.parse(interests);
interestsParsed.push(clickedItem);
localStorage.setItem('interests', JSON.stringify(interestsParsed));
稍后,如果我拉数组并遍历数组,则我的属性是不确定的。
var data = JSON.parse(localStorage.getItem('interests'));
for(var i = 0, j = data.length; i < j; i++ ){
console.log(data[i].anything); // any property is undefined
}
PS。控制台时,JSON对象看起来完全正常。关于道具为何未定义的任何想法?
更新:数据实际上是一个数组,遍历它确实为我提供了其中的每个值。但是,数组中的每个JSON对象都不再是对象,而必须经过JSON.parsed才能从存在的字符串中“重新创建”对象。
这是将JSON对象存储在localStorage中的数组中的非常不错的一课。
var data = JSON.parse(localStorage.getItem('interests'));
for(var i = 0, j = data.length; i < j; i++ ){
console.log(data[i].anything); // any property is undefined
var obj = JSON.parse(data[i]); // parse it instead
console.log(obj.title); // use it as an object now
}
我的假设是,您正在尝试stringify
使用复杂的对象,可能类似于DOM对象或其他内置API的对象。发生的事情是JSON.stringify
将对象从所有方法中删除,其中包括内部的setter和getter,而您仍然拥有一个空(或几乎为空)的对象。
在这种情况下,我的解决方案是将复杂的对象解析为一个简单的对象,该对象仅包含您选择的格式所需的属性。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句