[英]List comprehension-like filtering of object in JavaScript
我有一个简单的数组看起来像
obj = {1:false, 2:true, 3:true}
我想检索对象中具有值true的所有键的数组。
在python中你可以做到
>>> [key for key in obj if obj[key]]
[2, 3]
在Javascript中有一个单行或其他简单的方法吗? 我也可以访问lodash。
您可以使用Object.keys和Array.filter在任何支持Ecma5的浏览器中执行此操作:
> Object.keys(obj).filter(function(i) {return obj[i]});
> ["2", "3"]
使用新的javascript语法,你可以这样做。
const obj = {1:false, 2:true, 3:true}; const res = Object.keys(obj).filter(k => obj[k]); console.log(res);
你可以在Firefox 30+中完成。
obj = {1:false, 2:true, 3:true};
[for (key of Object.keys(obj)) if (obj[key]) key ];
结果
["2", "3"]
目前,它是唯一实现Array Comprehension的浏览器
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.