You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 14:54:03