![](/img/trans.png)
[英]How to get boolean value if any item in array of arrays is true or false?
[英]How to get the count of boolean value (if it is true) in array of objects
我必须在对象数组中获取布尔值的计数(如果为真)。 json结构如下:
[
{
"id": 5,
"name": "a",
"select": true
},
{
"id": 3,
"name": "b",
"select": false
},
{
"id": 2,
"name": "x",
"select": true
},
{
"id": 1,
"name": "y",
"select": false
}
]
像这样尝试
console.log(data.filter((x,i) => { return x.select; }).length)
那应该可以解决问题。 不需要角度
function getTrueCount(array) {
var count = 0;
for (var i = 0; i < array.length; i++) {
if (array[i].select) {
count++;
}
}
return count;
}
您可以使用filter来做到这一点。 代码将是:
var truevalues = yourarray.filter(function(element) {
return (element.select == true);
}
它返回满足条件的值,因此选择 true 的值。 然后您可以使用truevalues.length
计算值
这是执行此操作的函数式编程方式:
var count = yourarray.reduce((a, c) => c.yourboolvariable ? ++a : a, 0);
说明:末尾的零是a的初始值。 a 称为累加器。 “reduce”函数遍历数组中的每个值,传入累加器“a”以及当前项“c”。 粗箭头的正确大小是返回值。 如果 yourboolvariable 值为真,它会将 1 添加到 a 并返回。 如果您的boolvariable 值为false,它将简单地返回a 的前一个值,准备传递给下一次迭代。 a 的最终值成为返回给 count 的结果。
这不是角。 这是直接的 JavaScript。
所以,如果是响应,那么你可以使用 forEach 循环
$scope.count = 0;
angular.forEach(response, function(value, key) {
if (value.select == true) {
$scope.count = $scope.count + 1;
}
});
然后你可以从这里获取$scope.count
如果你有一个你提到的特定 JSON 结构,那么你可以尝试这样的事情。 如果需要,可以使用箭头功能
const getResult = function(inputArr){
let result = [];
if( Object.prototype.toString.call(inputArr) === '[object Array]' && inputArr.length > 0 ){
result = inputArr.filter(function(item){
return item.select;
});
}
return result.length;
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.