gpt4 book ai didi

javascript - 对象属性在 localStorage 之后未定义

转载 作者:行者123 更新时间:2023-11-30 00:28:19 24 4
gpt4 key购买 nike

我在 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
}

附言。当我控制它时,JSON 对象看起来完全正常。知道为什么 props 会是未定义的吗?

更新:数据实际上是一个数组,循环遍历它确实为我提供了其中的每个值。但是,数组中的每个 JSON 对象都不再是一个对象,必须进行 JSON.parsed 才能从它的字符串中“重新创建”一个对象。

这是关于在 localStorage 的数组中存储 JSON 对象的非常棒的一课。

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,而您仍然拥有一个空(或几乎为空)的对象。

在这种情况下,我的解决方案是将复杂的对象解析为一个简单的对象,其中只包含您选择的格式所需的属性。

关于javascript - 对象属性在 localStorage 之后未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30584476/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com