如何获取对象数组中布尔值的计数(如果为 true)
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
}
]
您可以使用
Array.prototype.filter()
像这样尝试
console.log(data.filter((x,i) => { return x.select; }).length)
DEMO
您可以使用过滤器来执行此操作。代码将是:
var truevalues = yourarray.filter(function(element) {
return (element.select == true);
}
它返回满足条件的值,因此已选择 true 的值。然后,您可以使用truevalues.length
来计算值
这应该可以解决问题。 无需角度
function getTrueCount(array) {
var count = 0;
for (var i = 0; i < array.length; i++) {
if (array[i].select) {
count++;
}
}
return count;
}
这是函数式编程方法:
var count = yourarray.reduce((a, c) => c.yourboolvariable ? ++a : a, 0);
解释:末尾的零是a的初始值,a称为累加器。"reduce"函数遍历数组中的每个值,传入累加器"a"也是当前项"c"。胖箭头的正确大小是返回值。如果你的变量值为 true,它将在 a 上加 1 并返回它。如果你的变量值为 false,它将简单地返回 a 的前一个值,准备传递给下一个迭代。a 的最终值将成为返回计数的结果。
这不是有棱角的。这是直接的JavaScript。
所以,如果是响应,那么你可以使用 for 每个循环,例如
$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;
};
相关文章:
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 如果函数返回True,则显示Javascript按钮
- 如果语句为true,则对一个或多个ng进行角度检查
- CORS-如果Jquery-ajax's”;withCredentials:true”;已使用
- 如果函数PHP中的条件为true,则禁用链接
- 如果URL中有任何字符串变体匹配,则返回true
- 为什么 1.2 == true 返回 false 如果布尔值 (1.2) 实际上是真的
- 如果onchange为true,如何运行函数
- Knockout JS单选按钮如果所有值都为true,则选择最后一个按钮
- 如果条件为true,ServiceNow显示按钮
- 使用if-else-if-true检查(验证)单选按钮如果未检查则无警报必须检查警报
- 如何停止和if语句如果另一个if语句为true
- Extjs如果Ext.panel.panel的collapsed=true,则展开的宽度不合适
- 如果值为true,AngularJS将更新ng模型
- 比较字符串,如果存在小的拼写错误,则返回 true
- 如果选定,如何将所选选项设置为 true
- 如果 JavaScript 返回 true,则重定向到 href
- 在表的所有 tds 中搜索确切的字符串“已停用”;如果为 true,则隐藏该表的整行
- 如果字符串与正则表达式 JavaScript 不匹配,则返回 True
- 如果=true,则停止jQuery函数