如何从JavaScript对象中提取值为true的键
获取对象中值为true的键的几种方法
嘿,这有几个实用的JavaScript方法可以帮你从给定的对象里筛选出值为true的键,直接看代码和解释就懂了:
方法1:Object.keys() 结合 filter()
这是最简洁常用的方式,先拿到对象所有的键,再过滤出对应值为true的:
const trueOptions = { trueOption1 : true, trueOption2 : true, trueOption3 : false, trueOption4 : false, trueOption5 : true }; const trueKeys = Object.keys(trueOptions).filter(key => trueOptions[key] === true); console.log(trueKeys); // 输出: ["trueOption1", "trueOption2", "trueOption5"]
Object.keys(trueOptions)返回对象所有可枚举的键组成的数组filter()遍历每个键,检查对应的值是否严格等于true,留下符合条件的键
方法2:Object.entries() 链式处理
如果想更直观地同时拿到键和值,可以用Object.entries()先转成键值对数组,再筛选提取:
const trueKeys2 = Object.entries(trueOptions) .filter(([key, value]) => value === true) .map(([key]) => key); console.log(trueKeys2); // 同样得到目标数组
Object.entries()把对象转换成[key, value]格式的数组- 先过滤出值为
true的键值对,再用map()提取出其中的键
方法3:for...in 循环(兼容旧环境)
如果需要兼容一些不支持ES6方法的旧浏览器,用传统的循环也能搞定:
const trueKeys3 = []; for (const key in trueOptions) { // 加上hasOwnProperty检查,避免拿到原型链上的属性 if (trueOptions.hasOwnProperty(key) && trueOptions[key] === true) { trueKeys3.push(key); } } console.log(trueKeys3); // 结果一致
小提示
如果你的对象里所有值都是布尔类型,也可以把条件简化成trueOptions[key],但我更推荐写=== true,这样能避免隐式类型转换带来的意外(比如如果某个值是1或者"true",也会被误判)。
内容的提问来源于stack exchange,提问作者Victor Garcia Civera
相关产品推荐
相关产品推荐

