计算数组长度的简写方法

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 functionsajeetharan的答案中遇到问题的人都是解决方案

arr.filter(function(a){return a.a != 1}).length;
Run Code Online (Sandbox Code Playgroud)

Saj*_*ran 21

使用filterlength

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)

  • Copying others answers to get Upvotes.......not a good way @Sajeetharan (4认同)

Nam*_*pal 17

最有效的内存方式是:

const result = arr.reduce((count,el)=> count+ (el.a!==1)},0)
Run Code Online (Sandbox Code Playgroud)

filter创建一个完整的新数组,reduce只创建一个新的var.并且它们都在数组上迭代一次.

  • @noahnu:`arr.reduce((c,o)=> o +(oa === 1),0)`;-) (3认同)

Fal*_*aly 15

你可以使用array.prototype.filterarray.length:

var length = arr.filter(el => el.a !== 1).length
Run Code Online (Sandbox Code Playgroud)