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

如何遍历LocalStorage中存储的复选框状态对象获取值为true的键?

解决LocalStorage中筛选复选框选中状态键的问题

你已经实现了页面刷新后保留复选框选中状态的功能,数据以JSON对象形式存在localStorage的checkboxValues键中。但你当前的遍历代码存在两个核心问题:

  1. 错误遍历了localStorage的顶级键集合,而非checkboxValues对应的内部对象
  2. 直接读取的是JSON字符串,未解析为JS对象,导致布尔值判断失效

正确的实现方式

方式1:原生JS遍历(for...in)

// 取出存储的JSON字符串并解析为对象,空对象作为默认值
const checkboxValues = JSON.parse(localStorage.getItem('checkboxValues')) || {};

// 遍历对象的键值对,筛选值为true的键
for (const key in checkboxValues) {
  if (checkboxValues.hasOwnProperty(key) && checkboxValues[key] === true) {
    console.log(`${key} => ${checkboxValues[key]}`);
  }
}

方式2:原生JS简洁写法(Object.entries)

const checkboxValues = JSON.parse(localStorage.getItem('checkboxValues')) || {};

// 解构键值对并筛选
Object.entries(checkboxValues).forEach(([key, value]) => {
  if (value) {
    console.log(`${key} => ${value}`);
  }
});

方式3:jQuery风格(与原有代码统一)

var checkboxValues = JSON.parse(localStorage.getItem('checkboxValues')) || {};

// 用jQuery的each方法遍历对象
$.each(checkboxValues, function(key, value) {
  if (value === true) {
    console.log(key + " => " + value);
  }
});

错误代码的问题说明

你原代码遍历的是localStorage本身的所有顶级键,而你的复选框状态都封装在checkboxValues这一个键对应的JSON字符串里,所以只会输出checkboxValues这个键名。同时,localStorage[key]拿到的是未解析的JSON字符串,不是布尔值,因此value == true的判断永远不会成立。

内容的提问来源于stack exchange,提问作者Tetsuochat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 22:48:25