如何获取对象数组中值为true的键名?
解决对象数组中获取值为true的键名问题
你的代码问题出在data是对象数组,直接对数组调用Object.keys()拿到的是数组的索引(比如["0"]),而非目标对象的键名,所以筛选逻辑完全不对。
修正后的代码如下:
const data = [{superadmin: true, admin: false, user: false}]; // 先取出数组中的第一个对象,再筛选其值为true的键 const keys = Object.keys(data[0]).filter(key => data[0][key]); console.log(keys); // 输出 ["superadmin"]
如果数组包含多个对象,需要批量提取每个对象中值为true的键,可以用map遍历处理:
const data = [ {superadmin: true, admin: false, user: false}, {admin: true, superadmin: false, user: false} ]; const allTrueKeys = data.map(item => Object.keys(item).filter(key => item[key])); console.log(allTrueKeys); // 输出 [["superadmin"], ["admin"]]
内容的提问来源于stack exchange,提问作者debugger
相关产品推荐
相关产品推荐

