sam*_*sam 15 javascript jquery angularjs
我有这样的数组
var arr = [{a:1, ...},{a:1, ...},{c:2, ...},{a:3, ...},{a:1, ...}]
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到数组的长度arr[x].a != 1.
我知道这可以使用for loop,push但我希望遵循每个体面的程序员应该做的最佳实践.
PS FYI我正在使用AngularJS.
编辑1
对于任何因为ES6脚本而arrow function在sajeetharan的答案中遇到问题的人都是解决方案
arr.filter(function(a){return a.a != 1}).length;
Run Code Online (Sandbox Code Playgroud)
Saj*_*ran 21
const result = arrayToCount.filter(i => i.a != 1 ).length;
Run Code Online (Sandbox Code Playgroud)
正如@Naman Kheterpal下面提到的,另一种方法是使用reduce
const result = arrayToCount.reduce((c, o) => o + (o.a === 1), 0)
Run Code Online (Sandbox Code Playgroud)
Nam*_*pal 17
最有效的内存方式是:
const result = arr.reduce((count,el)=> count+ (el.a!==1)},0)
Run Code Online (Sandbox Code Playgroud)
filter创建一个完整的新数组,reduce只创建一个新的var.并且它们都在数组上迭代一次.
Fal*_*aly 15
你可以使用array.prototype.filter和array.length:
var length = arr.filter(el => el.a !== 1).length
Run Code Online (Sandbox Code Playgroud)