我有一个像这样的数组
var arr = [{a:1, ...},{a:1, ...},{c:2, ...},{a:3, ...},{a:1, ...}]
如何获得arr[x].a != 1
的数组长度。
我知道这可以使用for loop
和push
完成,但我希望遵循每个体面的程序员应该做的最佳实践。
P.S 仅供参考我使用的是AngularJS。
编辑1
对于在sajeetharan's回答arrow function
问题的任何人,因为ES6脚本,这里是解决方案
arr.filter(function(a){return a.a != 1}).length;
答案 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.filter
和array.length
:
var length = arr.filter(el => el.a !== 1).length