ES6中push对象返回数组长度,如何将对象数组存储至sessionStorage
错误原因
Array.push() 方法的返回值是插入元素后数组的最新长度,不是修改后的数组本身,因此你直接将 push 的返回值序列化存入 sessionStorage 时,存储的是数字而非目标数组。
正确实现方案
方案1:先执行插入操作,再存储修改后的数组
这是最易读的通用写法:
const counties = { "Bucks": { "countyCode": "42017", "globalStateCode": "PA", "stateCode": "PA" }, "Montgomery": { "countyCode": "42091", "globalStateCode": "PA", "stateCode": "PA" } }; let selectedCountiesArray = []; // 先向数组插入目标对象 selectedCountiesArray.push(counties['Bucks']); // 再将完整数组序列化后存入sessionStorage sessionStorage.setItem("tableDisplay", JSON.stringify(selectedCountiesArray)); // 读取验证 let selectedCounties = JSON.parse(sessionStorage.getItem("tableDisplay"));
方案2:单行简写(不修改原数组)
如果不需要保留原数组,可使用展开运算符直接生成新数组存入:
sessionStorage.setItem("tableDisplay", JSON.stringify([...selectedCountiesArray, counties['Bucks']]));
多次追加存储的注意事项
如果需要多次向存储的数组中追加元素,需要先读取已有存储内容,避免覆盖历史数据:
// 读取已有存储,无存储时初始化空数组 const savedCounties = JSON.parse(sessionStorage.getItem("tableDisplay")) || []; // 插入新元素 savedCounties.push(counties['Montgomery']); // 回写存储 sessionStorage.setItem("tableDisplay", JSON.stringify(savedCounties));
内容的提问来源于stack exchange,提问作者dragonfly
相关产品推荐
相关产品推荐

