Javascript 如何获取对象数组中布尔值的计数(如果为true)

Javascript 如何获取对象数组中布尔值的计数(如果为true),javascript,Javascript,我必须得到对象数组中布尔值的计数(如果为真)。 json结构如下所示: [ { "id": 5, "name": "a", "select": true }, { "id": 3, "name": "b", "select": false }, { "id": 2, "name": "x", "select": true }, { "id": 1, "name": "y",

我必须得到对象数组中布尔值的计数(如果为真)。 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
  }
]

这应该能奏效。不需要角度

function getTrueCount(array) {
  var count = 0;
  for (var i = 0; i < array.length; i++) {
    if (array[i].select) {
      count++;
    }
  }
  return count;
}
函数getTrueCount(数组){
var计数=0;
对于(var i=0;i
您可以使用

像这样试试

console.log(data.filter((x,i) => { return x.select; }).length)

您可以使用。守则是:

var truevalues = yourarray.filter(function(element) {
    return (element.select == true);
}
它返回完成条件的值,因此已选择的值为true。然后您可以使用
truevalues.length
来计算值, 如果是回应的话 您可以像这样使用forEach循环

$scope.count = 0;
angular.forEach(response, function(value, key) {
  if (value.select == true) {
    $scope.count = $scope.count + 1;
  }
});

然后你可以从这里获取
$scope.count

这是函数式编程方法:

var count = yourarray.reduce((a, c) => c.yourboolvariable ? ++a : a, 0);
说明: 末尾的零是a的初始值。a被称为蓄能器。“reduce”函数遍历数组中的每个值,传入累加器“a”以及当前项“c”。fat箭头的正确大小是返回值。如果boolvariable值为true,它将向a添加1并返回该值。如果boolvariable值为false,它将简单地返回a的上一个值,准备传递到下一个迭代。a的最终值成为返回给count的结果


这不是棱角。这是纯JavaScript

如果您有一个您提到的特定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;
};

因为你没有提供任何尝试(代码片段)来解决你的问题,所以被否决了。各种浏览器上的支持如何?Chrome:Yes,Edge:Yes,Firefox:3,Internet Explorer:9,Opera:10.5,Safari:4,我相信在此之前你可以使用polyfills。你应该更新你的答案,而不是在评论中回复。真的吗?我没有看到其他人把他们的解决方案所使用的浏览器放在一起,用谷歌搜索答案就很容易了。