Javascript push() 替换元素而不是追加
Javascript push() replacing element instead of appending
这是我编写的一个函数,用于使用 Javascript 向 local storage
添加单词。如果您想知道,这是我为一个简单的字典查找网站构建 搜索历史记录 功能的尝试。
function add2local(entry){
var l = localStorage.length;
if(l==0){
var lu = [entry];
localStorage.setItem("w", JSON.stringify(lu));
}
else {
var lu = JSON.parse(localStorage.getItem("w")); alert(lu);
lu.push(entry); alert(lu);
}}
我的理解是每次调用此函数时都会将其参数附加到本地存储。所以,我第一次调用它时,我发送 pirate 这个词。这被添加到阵列中,随后按预期添加到本地存储中。第一个 alert()
(alert() 函数仅用于测试)证实了这一点。第二次,我用vampire这个词来称呼它。现在,按照函数的逻辑,vampire 应该 appended 到数组,因此第二个 alert()
应该输出 "pirate, vampire." 确实如此。
但是第三次,比如说,我用 foo 这个词调用函数。这一次,它应该输出 "pirate, vampire, foo" 而不是显示 "pirate, foo"。每次后续调用都只是用新词替换第二个词,而不是附加它。我在这里做错了什么?我是不是误解了 push()
的工作原理?
if
条件和逻辑不正确; localStorage
有多少项无关紧要,但重新保存修改后的数组非常重要。
无论如何,我怀疑这是一个暗示。可能看起来像这样:
function add2local(entry){
// load entries - if there are none, we simulate an empty array to load
var lu = JSON.parse(localStorage.getItem("w") || "[]");
// add new entry
lu.push(entry);
// write back - so change is not lost between function calls
localStorage.setItem("w", JSON.stringify(lu));
// return all local entries saved - for use from the caller
return lu;
}
为什么要查看存储长度?你不在乎。获取键,如果它为 null,则默认为空数组。
function add2local (entry) {
var key = "w"
var value = localStorage.getItem(key)
if (value) {
value = JSON.parse(value)
} else {
value = []
}
value.push(entry)
localStorage.setItem(key, JSON.stringify(value))
}
这是我编写的一个函数,用于使用 Javascript 向 local storage
添加单词。如果您想知道,这是我为一个简单的字典查找网站构建 搜索历史记录 功能的尝试。
function add2local(entry){
var l = localStorage.length;
if(l==0){
var lu = [entry];
localStorage.setItem("w", JSON.stringify(lu));
}
else {
var lu = JSON.parse(localStorage.getItem("w")); alert(lu);
lu.push(entry); alert(lu);
}}
我的理解是每次调用此函数时都会将其参数附加到本地存储。所以,我第一次调用它时,我发送 pirate 这个词。这被添加到阵列中,随后按预期添加到本地存储中。第一个 alert()
(alert() 函数仅用于测试)证实了这一点。第二次,我用vampire这个词来称呼它。现在,按照函数的逻辑,vampire 应该 appended 到数组,因此第二个 alert()
应该输出 "pirate, vampire." 确实如此。
但是第三次,比如说,我用 foo 这个词调用函数。这一次,它应该输出 "pirate, vampire, foo" 而不是显示 "pirate, foo"。每次后续调用都只是用新词替换第二个词,而不是附加它。我在这里做错了什么?我是不是误解了 push()
的工作原理?
if
条件和逻辑不正确; localStorage
有多少项无关紧要,但重新保存修改后的数组非常重要。
无论如何,我怀疑这是一个暗示。可能看起来像这样:
function add2local(entry){
// load entries - if there are none, we simulate an empty array to load
var lu = JSON.parse(localStorage.getItem("w") || "[]");
// add new entry
lu.push(entry);
// write back - so change is not lost between function calls
localStorage.setItem("w", JSON.stringify(lu));
// return all local entries saved - for use from the caller
return lu;
}
为什么要查看存储长度?你不在乎。获取键,如果它为 null,则默认为空数组。
function add2local (entry) {
var key = "w"
var value = localStorage.getItem(key)
if (value) {
value = JSON.parse(value)
} else {
value = []
}
value.push(entry)
localStorage.setItem(key, JSON.stringify(value))
}