开发者问题收集

在 localstorage 之后尝试使用 .push 时数组为空

2016-12-06
122

当我尝试将新值推送到数组中时,出现 TypeError 错误,提示数组为空。

//first off..
var sillyArray= ["dummy"];
localStorage.setItem("sillyArray", JSON.stringify(sillyArray));

//I later used this
sillyArray = JSON.parse(localStorage.getItem("sillyArray"));
//the error is here
sillyArray.push("yes");
localStorage.setItem("sillyArray", JSON.stringify(sillyArray));

我无法推送或解析此错误吗?

(编辑了发布错误)

3个回答

yesArray 从未被 定义 。这就是为什么无法执行 .push()

Captus
2016-12-06

是的,你可以,但是你试图将一个项目推送到 undefined 变量中,这就是你得到 TypeError 的原因。

你应该这样做:

var array = ['dummy'];
localStorage.setItem('someKey', JSON.stringify(array));
array = JSON.parse(localStorage.getItem('someKey'));
array.push('foo');
localStorage.setItem('someKey', JSON.stringify(array));

然后如果你这样做

console.log(JSON.parse(localStorage.getItem('someKey')))

输出将是你期望的 ["dummy", "foo"]

Mati
2016-12-06

正如用户 nnnnnn 所说,我没有正确执行我的 localStorage.setItem("sillyArray", JSON.stringify(sillyArray));

它位于一个 if 语句中( 未图示 ),该语句未执行导致为空。

谢谢大家!

Sausejii
2016-12-06