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

时间:2014-11-07 19:39:57

标签: javascript lodash

我有一个看起来像

的简单数组
obj = {1:false, 2:true, 3:true}

我想检索对象中具有值true的所有键的数组。

在python中你可以做到

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

在Javascript中是否有单行或其他简单的方法?我也可以访问lodash。

3 个答案:

答案 0 :(得分:2)

您可以在任何支持Ecma5的浏览器中使用Object.keys和Array.filter:

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

答案 1 :(得分:1)

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

$sql = mysqli_query($dbconn, "SELECT * FROM data WHERE id = ?");

$rows = array();
    while($r = mysqli_fetch_assoc($sql)) {
    $rows[] = $r;
    }

答案 2 :(得分:0)

你可以在Firefox 30 +中完成。

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

结果

["2", "3"]

目前,它是唯一实施Array Comprehension

的浏览器