我必须在对象数组中获得布尔值的计数(如果为真)。 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
}
]
答案 0 :(得分:5)
您可以使用 Array.prototype.filter()
试试这个
console.log(data.filter((x,i) => { return x.select; }).length)
的 DEMO
强>
答案 1 :(得分:1)
这应该可以解决问题。没有角度需要
function getTrueCount(array) {
var count = 0;
for (var i = 0; i < array.length; i++) {
if (array[i].select) {
count++;
}
}
return count;
}
答案 2 :(得分:1)
这是执行此功能的编程方式:
var count = yourarray.reduce((a, c) => c.yourboolvariable ? ++a : a, 0);
说明: 最后的零是a的初始值。 a被称为累加器。 “reduce”函数遍历数组中的每个值,传入累加器“a”以及当前项“c”。胖箭头的正确大小是返回值。如果yourboolvariable值为true,则将a添加1并返回该值。如果yourboolvariable值为false,它将只返回a的先前值,准备传入下一次迭代。 a的最终值变为返回计数的结果。
这不是棱角分明的。这是直接的JavaScript。
答案 3 :(得分:0)
您可以使用filter执行此操作。代码是:
var truevalues = yourarray.filter(function(element) {
return (element.select == true);
}
它返回完成条件的值,因此选择true的值。然后,您可以使用truevalues.length
答案 4 :(得分:0)
所以, 如果它是响应那么 你可以使用forEach循环,如
$scope.count = 0;
angular.forEach(response, function(value, key) {
if (value.select == true) {
$scope.count = $scope.count + 1;
}
});
然后你可以从这里取$scope.count
答案 5 :(得分:0)
如果您有提到的特定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;
};