Ответ 1
const result = arrayToCount.filter(i => i.a != 1 ).length;
Как @Naman Kheterpal
, упомянутый ниже, другим способом является использование reduce
const result = arrayToCount.reduce((c, o) => o + (o.a === 1), 0)
У меня есть массив вроде этого
var arr = [{a:1, ...},{a:1, ...},{c:2, ...},{a:3, ...},{a:1, ...}]
как я могу получить длину массива, где arr[x].a != 1
.
Я знаю, что это можно сделать с помощью for loop
и push
, но я хочу следовать наилучшей практике, как это должен делать каждый достойный программист.
P.S FYI Я использую AngularJS.
РЕДАКТИРОВАТЬ 1
Для тех, кто сталкивается с проблемами с ответом arrow function
в sajeetharan из-за ES6 script, вот решение
arr.filter(function(a){return a.a != 1}).length;
const result = arrayToCount.filter(i => i.a != 1 ).length;
Как @Naman Kheterpal
, упомянутый ниже, другим способом является использование reduce
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
создает только новый var.
И оба они повторяются по массиву один раз.