[英]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的任何建议。
使用filter
和some
。
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.