Как рассчитать количество объектов, которые я получаю из цикла Javascript - PullRequest
0 голосов
/ 20 сентября 2018

Я отфильтровал свой набор пользователей (массив) с помощью if (elem.id_verified).Теперь я получаю 77 пользователей объектов.Я просто хочу взять количество этих объектов.Я попытался с console.log (this.numOfunverifiedUsers.length), но я получаю 77 недооцененных.У меня вопрос, как собрать все объекты и получить это число.Может быть, моя логика движется в неправильном направлении.

this.users=response.data.users

this.numOfunverifiedUsers = []

this.users.forEach(elem => {
  if (elem.id_verified === 0) {
    this.numOfunverifiedUsers = elem
    console.log(this.numOfunverifiedUsers.length)
  }
})

Ответы [ 5 ]

0 голосов
/ 20 сентября 2018

Это будет лучше работать с использованием фильтра

console.log(this.users.filter(function (val) {
return val.id_verified === 0
}).length)

, который фильтрует элементы с id_verified === 0 и подсчитывает их длину.

0 голосов
/ 20 сентября 2018

С this.numOfunverifiedUsers = elem вы назначаете 'elem' для ссылки на массив.В результате вы получаете исключения, которые заставляют оператор '=' возвращать неопределенный тип примитива (как результат ошибок функций; см. undefined - JavaScript | MDN ).То, что вы хотите сделать, это либо добавить элемент итеративно в массив "по-старому", путем назначения элемента, либо просто использовать способ ООП с помощью метода push.В первом случае не требуется функция подсчета, поскольку вы можете сделать что-то подобное:

var count = 0; //outside the forEach 
...
if (elem.id_verified === 0) {
{
      this.numOfunverifiedUsers[count++]=elem
      console.log(count)        
}
...

Однако, как отмечали другие, использование фильтра делает код намного более чистым и читаемым

0 голосов
/ 20 сентября 2018

Это также должно работать:

console.log(this.users.filter(function (val) {
    return val.id_verified === 0
}).length)

фильтровать элементы, которые имеют значение id_verified === 0, и считать их длину.

0 голосов
/ 20 сентября 2018

Я думаю, что было бы лучше, если бы вы построили этот список с фильтром:

this.numOfunverifiedUsers = this.users.filter(
  user => user.id_verified === 0
);
console.log(this.numOfunverifiedUsers);
console.log(this.numOfunverifiedUsers.length);

Если вы хотите прочитать о фильтре: Метод фильтра

0 голосов
/ 20 сентября 2018
this.numOfunverifiedUsers.push(elem) 

Вставить элемент в массив.this.numOfunverifiedUsers = elem, замените его на

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...