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);