繁体   English   中英

使用原始JavaScript或underscore.js根据布尔值删除或过滤对象

[英]Delete or Filter object based on Boolean values using raw JavaScript or underscore.js

我有一个JavaScript对象,其中包含2个具有不同true / false布尔值的对象,并希望过滤掉第一个具有所有false值的对象。

如果在任何情况下任何键为true,则它应该保留,并且不应该过滤掉数据对象。

我想仅根据任何真实值保留第二个对象,因为您可以看到它具有一些“真实”值。

让我进一步解释一下,因为您会看到“数据”的第一个对象(其所有布尔值均为“假”)应被省略,最终结果应仅包含第二个数据对象,因为它是一些“真”值。

"data": [{
                                "Products": "Mobile",
                                "Australia": false,
                                "Austria": false,
                                "Belgium": false,
                                "Canada": false,
                                "China": false,
                                "India": false,
                                "Poland": false,
                                "Brazil": false,
                                "US": false
                            }, 
                            {
                                "Products": "Tablet",
                                "Australia": false,
                                "Austria": true,
                                "Belgium": false,
                                "Canada": false,
                                "China": false,
                                "India": true,
                                "Poland": false,
                                "Brazil": true,
                                "US": false
                            }]

最终结果应该仅是这样,由于所有假值,它都应该过滤第一个对象。

"data": [{
                                "Products": "Tablet",
                                "Australia": false,
                                "Austria": true,
                                "Belgium": false,
                                "Canada": false,
                                "China": false,
                                "India": true,
                                "Poland": false,
                                "Brazil": true,
                                "US": false
                            }]

欢迎使用原始JavaScript或Underscore.js的任何建议。

使用filtersome

data.filter(                             // Filter the data array by
  function(product) {                    // looking at each product in it
    return Object.keys(product)          // and for that product's keys
      .some(                             // see if any of the 
        function(key) {                  // keys
          return product[key] === true;  // have a value of true
        }
      )
    ;
  }
)

使用下划线的版本:

    var result = _.filter(data, function(product){
        return _.some(product, function(value){
            return _.isBoolean(value) && value;
        });
    });  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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