计算数组

时间:2017-11-16 08:09:18

标签: javascript jquery angularjs

我有一个像这样的数组

var arr = [{a:1, ...},{a:1, ...},{c:2, ...},{a:3, ...},{a:1, ...}]

如何获得arr[x].a != 1的数组长度。

我知道这可以使用for looppush完成,但我希望遵循每个体面的程序员应该做的最佳实践。

P.S 仅供参考我使用的是AngularJS。

编辑1 对于在sajeetharan's回答arrow function问题的任何人,因为ES6脚本,这里是解决方案

arr.filter(function(a){return a.a != 1}).length;

3 个答案:

答案 0 :(得分:21)

使用 http://dbplyr.tidyverse.org/articles/sql-translation.html filter

const result = arrayToCount.filter(i => i.a != 1 ).length;

如下所述 @Naman Kheterpal ,另一种方法是使用 length

const result = arrayToCount.reduce((c, o) => o + (o.a === 1), 0)

答案 1 :(得分:17)

最有效的内存方式是:

const result = arr.reduce((count,el)=> count+ (el.a!==1)},0)

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

答案 2 :(得分:15)

您可以使用array.prototype.filterarray.length

var length = arr.filter(el => el.a !== 1).length