JavaScript中对象的列表理解式过滤

JavaScript中对象的列表理解式过滤,javascript,lodash,Javascript,Lodash,我有一个简单的数组 obj = {1:false, 2:true, 3:true} 我想检索对象中值为true的所有键的数组 在python中,您只需 >>> [key for key in obj if obj[key]] [2, 3] 在Javascript中是否有一行或其他简单的方法来实现这一点?我还可以使用lodash 您可以在Firefox 30+中完成 obj = {1:false, 2:true, 3:true}; [for (key of Object.ke

我有一个简单的数组

obj = {1:false, 2:true, 3:true}
我想检索对象中值为true的所有键的数组

在python中,您只需

>>> [key for key in obj if obj[key]]
[2, 3]

在Javascript中是否有一行或其他简单的方法来实现这一点?我还可以使用lodash

您可以在Firefox 30+中完成

obj = {1:false, 2:true, 3:true};
[for (key of Object.keys(obj)) if (obj[key]) key ]; 
结果

["2", "3"]

目前,它是唯一实现

的浏览器。您可以在任何支持Ecma5的浏览器中使用Object.keys和Array.filter执行此操作:

> Object.keys(obj).filter(function(i) {return obj[i]});
> ["2", "3"]

使用新的javascript语法,您可以这样做

constobj={1:false,2:true,3:true};
常量res=Object.keys(obj.filter)(k=>obj[k]);

控制台日志(res)
for(obj中的var key)if(obj[key])console.log(key)
?非常好,但是ECMAscript 7的支持是一个漫长的过程;)“非标准。请勿使用!”“过时,因为Gecko 58/此功能已过时。”回答不错,肯定比我的好!