【发布时间】:2023-03-24 21:36:02
【问题描述】:
所以我想遍历存储在浏览器本地存储中的 JSON 对象。 基本上 JSON 对象看起来和添加如下:
if (localStorage.getItem("playerHighscoreObject") == undefined) {
playerHighscoreList = [
{'name': "Ben", 'score': 40},
{'name': "Joe", 'score': 44},
{'name': "Anna", 'score': 51},
{'name': "Mitch", 'score': 59},
{'name': "Abdi", 'score': 63}
];
localStorage.setItem("playerHighscoreObject", JSON.stringify(playerHighscoreList));
}
else {
playerHighscoreList = localStorage.getItem("playerHighscoreObject");
}
然后我想遍历对象并检查“score”键并将值与潜在的新条目进行比较。
function saveScore() {
var key = "score";
console.log(playerHighscoreList);
for (key in playerHighscoreList) {
if (playerHighscoreList.hasOwnProperty(key)) {
var val = playerHighscoreList[key];
console.log(val);
}
}
}
但是,当我这样做时,我在日志中得到 135 undefined。即使我打印了 JSON 对象并且它显示为应有的样子
[{"name":"Ben","score":40},{"name":"Joe","score":44},{"name":"Anna","score":51},{"name":"Mitch","score":59},{"name":"Abdi","score":63}]
我在这里做错了什么?
编辑: 建议重复使用 jQuery 来解决问题。我不希望使用 jQuery,而是使用标题中描述的 vanilla javascript。
【问题讨论】:
-
有
JSON.parse吗? -
@Dimava:哦,我完全错过了。
stringify在那里,但parse不见了。 -
“即使我打印了 JSON 对象并且它显示为应有的样子” 您获得该特定输出的事实意味着
playerHighscoreList是一个 字符串。记录一个数组/对象会产生稍微不同的输出。
标签: javascript json iteration