对象未推入本地存储阵列
Objects are not pushing into Local Storage Array
帮帮我!我正在将一组对象设置到本地存储中。我遇到的问题是,每当我推送新对象时,它都会删除最后一个对象并存储新对象并用新对象更新数组。并只保留单个对象。但我想在数组中设置多个对象。我找不到我做错了什么。
let recent_searched = [];
let searched_item = {}
const storeLocal = (e) => {
searched_item['artwork'] = "image.jpg"
searched_item['itemName'] = "Harry Potter"
searched_item['itemWriterName'] = "J K Rowling"
recent_searched.push(searched_item)
localStorage.setItem("recent_searched", JSON.stringify(recent_searched));
}
console.log(JSON.parse(localStorage.getItem("recent_searched")))
您的代码仅创建一个 普通对象。它用 let searched_item = {}
定义。您的其余代码仅 改变 那个单个对象,即使它已经存在于数组中。所以你只需将重复的对象引用附加到你的数组。
每次推送到数组时都需要创建一个单独的对象。所以:
let recent_searched = [];
const storeLocal = (e) => {
let searched_item = { // This creates(!) an object
artwork: "image.jpg",
itemName: "Harry Potter",
itemWriterName: "J K Rowling"
};
recent_searched.push(searched_item)
localStorage.setItem("recent_searched", JSON.stringify(recent_searched));
}
如果您的页面重新加载,请注意您的数组变量不是从头开始维护和创建的。因此,请确保在加载页面时,您读取 本地存储中的内容:
let stored = localStorage.getItem("recent_searched");
let recent_searched = stored ? JSON.parse(stored) : [];
localStorage.setItem 就像一个替换函数,它会尝试添加一个为提供的键传递的值,如果该键已经存在于本地存储中,那么它将用新值替换旧值一.
您需要获取旧值并在保存之前将新值附加到它。
像这样
let recent_searched = [];
let searched_item = {};
const data = await localStorage.getItem("recent_searched");
if(data){
recent_searched = JSON.parse(data);
}
searched_item['artwork'] = "image.jpg"
searched_item['itemName'] = "Harry Potter"
searched_item['itemWriterName'] = "J K Rowling"
recent_searched.push(searched_item)
localStorage.setItem("recent_searched", JSON.stringify(recent_searched));
帮帮我!我正在将一组对象设置到本地存储中。我遇到的问题是,每当我推送新对象时,它都会删除最后一个对象并存储新对象并用新对象更新数组。并只保留单个对象。但我想在数组中设置多个对象。我找不到我做错了什么。
let recent_searched = [];
let searched_item = {}
const storeLocal = (e) => {
searched_item['artwork'] = "image.jpg"
searched_item['itemName'] = "Harry Potter"
searched_item['itemWriterName'] = "J K Rowling"
recent_searched.push(searched_item)
localStorage.setItem("recent_searched", JSON.stringify(recent_searched));
}
console.log(JSON.parse(localStorage.getItem("recent_searched")))
您的代码仅创建一个 普通对象。它用 let searched_item = {}
定义。您的其余代码仅 改变 那个单个对象,即使它已经存在于数组中。所以你只需将重复的对象引用附加到你的数组。
每次推送到数组时都需要创建一个单独的对象。所以:
let recent_searched = [];
const storeLocal = (e) => {
let searched_item = { // This creates(!) an object
artwork: "image.jpg",
itemName: "Harry Potter",
itemWriterName: "J K Rowling"
};
recent_searched.push(searched_item)
localStorage.setItem("recent_searched", JSON.stringify(recent_searched));
}
如果您的页面重新加载,请注意您的数组变量不是从头开始维护和创建的。因此,请确保在加载页面时,您读取 本地存储中的内容:
let stored = localStorage.getItem("recent_searched");
let recent_searched = stored ? JSON.parse(stored) : [];
localStorage.setItem 就像一个替换函数,它会尝试添加一个为提供的键传递的值,如果该键已经存在于本地存储中,那么它将用新值替换旧值一.
您需要获取旧值并在保存之前将新值附加到它。
像这样
let recent_searched = [];
let searched_item = {};
const data = await localStorage.getItem("recent_searched");
if(data){
recent_searched = JSON.parse(data);
}
searched_item['artwork'] = "image.jpg"
searched_item['itemName'] = "Harry Potter"
searched_item['itemWriterName'] = "J K Rowling"
recent_searched.push(searched_item)
localStorage.setItem("recent_searched", JSON.stringify(recent_searched));