【问题标题】:Get all keys of a JavaScript object whose value is true获取值为 true 的 JavaScript 对象的所有键
【发布时间】:2014-12-24 10:19:16
【问题描述】:

我有对象pks 并想提取值为true 的所有键。

pks = {3: false, 7: true, 2: true}

有没有可以返回[7, 2]的下划线函数?我尝试过_.invert,但在此过程中丢失了一个值,因此我正在寻找替代方法。

【问题讨论】:

    标签: javascript underscore.js


    【解决方案1】:

    您可以使用内置函数来做到这一点,不需要下划线:

    Object.keys(pks)
      .filter(function(k){return pks[k]})
      .map(Number)
    

    【讨论】:

      【解决方案2】:

      试试这个:

      _.reduce(pks, function(memo, val, key){
        if (val) memo.push(key);
        return memo;
      }, []);
      

      【讨论】:

        【解决方案3】:

        洛达什:

        _.compact(_.map(pks, function(value, prop) {
          if(value) {
            return prop;
          }
        }));
        

        【讨论】:

          【解决方案4】:

          我会使用 Object.entries()、filter() 和 map():

          const pks = {3: false, 7: true, 2: true};
          
          const trueKeys = Object.entries(pks).filter(([_, v]) => v).map(([k, _]) => +k);
          
          console.log(trueKeys);

          【讨论】:

            【解决方案5】:

            据我所知,没有下划线函数可以专门执行此操作,但有一种方法可以自己完成:

            function getTrueKeys(obj) {
               var ret = [];
               for (var key in obj) {
                  if (obj.hasOwnProperty(key) && obj[key] === true) {
                     ret.push(key);
                  }
               }
               return ret;
            }
            

            【讨论】:

              猜你喜欢
              • 2020-12-13
              • 2011-05-22
              • 1970-01-01
              • 2016-08-21
              • 2017-06-07
              • 1970-01-01
              • 2021-12-27
              • 2023-01-17
              相关资源
              最近更新 更多