Подтвердить что ты не робот

Сокращенный метод подсчета длины массива

У меня есть массив вроде этого

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;
4b9b3361

Ответ 1

Используйте filter и length

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

Как @Naman Kheterpal, упомянутый ниже, другим способом является использование reduce

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

Ответ 2

Вы можете использовать array.prototype.filter и array.length:

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

Ответ 3

Самый эффективный для памяти способ:

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

filter создает полный новый массив, reduce создает только новый var. И оба они повторяются по массиву один раз.