Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 计算数组长度的速记方法_Javascript_Jquery_Angularjs - Fatal编程技术网

Javascript 计算数组长度的速记方法

Javascript 计算数组长度的速记方法,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我有一个这样的数组 var arr = [{a:1, ...},{a:1, ...},{c:2, ...},{a:3, ...},{a:1, ...}] 如何获取数组的长度,其中arr[x].a!=1 我知道这可以通过使用for loop和push来实现,但我想遵循每一位优秀程序员应该遵循的最佳实践 p.S仅供参考,我正在使用AngularJS 编辑1 对于因ES6脚本而在回答中遇到箭头功能问题的人,这里是解决方案 arr.filter(function(a){return a.a != 1}

我有一个这样的数组

var arr = [{a:1, ...},{a:1, ...},{c:2, ...},{a:3, ...},{a:1, ...}]
如何获取数组的长度,其中
arr[x].a!=1

我知道这可以通过使用
for loop
push
来实现,但我想遵循每一位优秀程序员应该遵循的最佳实践

p.S仅供参考,我正在使用AngularJS

编辑1 对于因ES6脚本而在回答中遇到
箭头功能问题的人,这里是解决方案

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

const result = arrayToCount.filter(i => i.a != 1 ).length;
const result = arrayToCount.reduce((c, o) => o + (o.a === 1), 0)
正如下面提到的那样,另一种方法是使用

const result = arrayToCount.filter(i => i.a != 1 ).length;
const result = arrayToCount.reduce((c, o) => o + (o.a === 1), 0)

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

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

实现这一点最有效的方法是:

const result = arr.reduce((count,el)=> count+ (el.a!==1)},0)
filter
创建一个完整的新数组,
reduce
只创建一个新变量。
如果你使用箭头符号并立即返回,你最好简化:
arr.reduce((c,o)=>(o.a==1?c:++c),0)
@noahnu:
arr.reduce((c,o)=>o+(o.a==1),0)
@noahnu:
arr.reduce((c,o=>o+(o.a==1),0)
;-)@LeonAdler是的,尽管它应该是
c+(o.a!==1)
。关于您的编辑,您使用的是什么浏览器/环境?几乎所有现代浏览器都支持箭头符号已有一段时间了(我想IE11除外),我正在使用Ionic框架开发android应用程序。Arrow函数在我的情况下不起作用,这就是为什么我采用了变通方法。如果您将其作为应用程序进行构建,您可能需要研究一种构建自动化工具,如paired with babel(具有最小转换)。它将允许您编写现代JavaScript,而不考虑平台。您可以将您的JS传输到较旧的版本,以针对特定的平台(尽管希望您不必长期针对较旧的引擎)。复制其他答案以获得升级票……这不是一个好办法@Sajeetharani忘记为您添加积分!只是我改进了我的答案