Javascript 如何计算数组中与条件匹配的所有对象?

Javascript 如何计算数组中与条件匹配的所有对象?,javascript,arrays,function,Javascript,Arrays,Function,如何计算数组中与以下条件匹配的所有对象:是否为_read==true 这就是我的阵列的外观: [ { "id": 1, "is_read": true, }, { "id": 2, "is_read": true, }, { "id": 3, "is_read": false, }, { "id": 4, "is_read": true, }, ] 只需通过传递callback函数来使用filter

如何计算数组中与以下条件匹配的所有对象:
是否为_read==true

这就是我的阵列的外观:

[
  {
    "id": 1,
    "is_read": true,
  },
  {
    "id": 2,
    "is_read": true,
  },
  {
    "id": 3,
    "is_read": false,
  },
  {
    "id": 4,
    "is_read": true,
  },
]

只需通过传递
callback
函数来使用
filter
方法,并使用应用于筛选结果的
length
属性

let data=[{“id”:1,“is_read”:true,},{“id”:2,“is_read”:true,},{“id”:3,“is_read”:false,},{“id”:4,“is_read”:true,},],
长度=数据。过滤器(功能(项目){
返回项。已读取;
}).长度;

控制台日志(长度)过滤器

const count=(arr,条件)=>arr.filter(条件).length;
const arr=[{is_read:true},{is_read:false}]
日志(计数(arr,(o)=>o.is_read))使用数组方法

使用Array.reduce

const r = (sum, obj) => sum + (obj.is_read == true ? 1 : 0);
const count = arr.reduce(r, 0);

console.log(count);
您可以使用,从
0
开始,为每个元素添加谓词的结果。这是因为可以将
true
强制为
1
false
强制为
0

const getMatchCount=(arr,谓词)=>arr.reduce((a,b)=>a+谓词(b),0);
log(getMatchCount([{“id”:1,“is_read”:true,},{“id”:2,“is_read”:true,},{“id”:3,“is_read”:false,},{“id”:4,“is_read”:true,}),
x=>x.is_read);
//获取数组中“is_read”属性为true的对象数
log(getMatchCount([1,2,3,6,13,-2,9,9],
x=>x%2==1);

//获取数组中奇数的数目
arr.filter(el=>el.is_read)。长度
?谢谢@Nimeshka!!欢迎光临@FeedGit。如果可以确定obj.is_read始终是布尔值,则可以省略(obj.is_read==true?1:0)部分。然后它将被减少到常数r=(sum,obj)=>sum+obj.is_read;是 啊非常感谢!:)
const r = (sum, obj) => sum + (obj.is_read == true ? 1 : 0);
const count = arr.reduce(r, 0);

console.log(count);