从布尔字典中提取object.keys

时间:2015-11-11 13:02:26

标签: javascript arrays dictionary underscore.js

我正在使用js& underscore.js,如何转换以下布尔字典:

{first: true, second: false, third: true}

到以下关键数组:

['first', 'third']

3 个答案:

答案 0 :(得分:3)

与接受的答案类似,但使用_.identity作为_.pick的谓词来挑选真正的答案:

var result = _.keys(_.pick(data, _.identity));

答案 1 :(得分:2)

在下划线中有函数_.pick,您可以使用它过滤数据,然后使用.keys以返回带有对象键的数组

var data = {
  first: true, 
  second: false, 
  third: true
};

var result = _.chain(data)
  .pick(function (value) {
    return value;
    // or 
    // return value === true;
    // if you need check exact value
  })
  .keys()
  .value();

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore.js"></script>

答案 2 :(得分:0)

Object.keys()应该适合你。 (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

<?php
// Create array to hold errors
    $errors = array();

    // Get ID from URL
    $user_id = isset($_GET['id']) ? $_GET['id'] : '';

    // Check for empty ID
    if (empty($user_id)) {
        array_push($errors, 'Empty user ID');
    } else {
        if(!ctype_digit(strval($user_id))) {
            array_push($errors, 'Invalid user ID');
        } else {
            // Get numerical value of string (int or float)
            $num_user_id = $user_id + 0;
            // Check that number is an int
            if (!ctype_digit(strval($num_user_id)))
                array_push($errors, 'Invalid user ID');
        }
    }
?>

请注意,这在IE8等旧版浏览器中未实现。上面的mdn网站有一个ya的polyfill