繁体   English   中英

列表理解 - 在JavaScript中过滤对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM