Рубрики
Без рубрики

Как считать объекты в массиве

Знание того, как быстро проиграть через массив и объекты подсчета обманчиво просто. Метод длины () расскажет вам общее количество значений в массиве, но что, если вы хотите сосчитать только эти значения, основанные на определенных условиях? Например, представьте, что у вас есть массив, как

Автор оригинала: FreeCodeCamp Community Member.

Знание того, как быстро проиграть через массив и объекты подсчета обманчиво просто. Длина () Способ сообщит вам общее количество значений в массиве, но что, если вы хотите сосчитать только эти значения, основанные на определенных условиях?

Например, представьте, что у вас есть такой массив:

const storage = [
  { data: '1', status: '0' },
  { data: '2', status: '0' },
  { data: '3', status: '0' },
  { data: '4', status: '0' },
  { data: '5', status: '0' },
  { data: '6', status: '0' },
  { data: '7', status: '1' },
];

И вы хотите сосчитать количество объектов с Статус установить '0' Отказ

Как и только для всего программирования, есть несколько способов сделать это. Мы пройдем несколько общих методов ниже.

Используйте A для цикла

Вероятно, самый простой способ было бы объявить счетчик Переменная, петля через массив и итерацию прилавок только если Статус равно '0' :

const storage = [
  { data: '1', status: '0' },
  { data: '2', status: '0' },
  { data: '3', status: '0' },
  { data: '4', status: '0' },
  { data: '5', status: '0' },
  { data: '6', status: '0' },
  { data: '7', status: '1' },
];

let counter = 0;
for (let i = 0; i < storage.length; i++) {
  if (storage[i].status === '0') counter++;
}

console.log(counter); // 6

Вы можете немного упростить это, используя для ... из петля:

const storage = [
  { data: '1', status: '0' },
  { data: '2', status: '0' },
  { data: '3', status: '0' },
  { data: '4', status: '0' },
  { data: '5', status: '0' },
  { data: '6', status: '0' },
  { data: '7', status: '1' },
];

let counter = 0;
for (const obj of storage) {
  if (obj.status === '0') counter++;
}

console.log(counter); // 6

Кроме того, вы можете создать функцию, чтобы сделать то же самое, если у вас есть другие массивы объектов, которые будут подсчитаны условно:

const storage = [
  { data: '1', status: '0' },
  { data: '2', status: '0' },
  { data: '3', status: '0' },
  { data: '4', status: '0' },
  { data: '5', status: '0' },
  { data: '6', status: '0' },
  { data: '7', status: '1' },
];

function statusCounter(inputs) {
  let counter = 0;
  for (const input of inputs) {
    if (input.status === '0') counter += 1;
  }
  return counter;
}

statusCounter(storage); // 6

Используйте методы массива

JavaScript включает в себя кучу полезных методов при работе с массивами. Каждый может быть привязан к массиву и передал разные параметры для работы, когда итерация через элементы в массиве.

Двое мы смотрели на себя Фильтр () и Уменьшить () Отказ

фильтр()

Метод фильтра делает только что – это итерации через каждый элемент в массиве и фильтрует все элементы, которые не соответствуют условиям, которые вы предоставляете. Затем он возвращает новый массив со всеми элементами, которые возвращаются TRUE на основе ваших условий (ов).

Например:

const storage = [
  { data: '1', status: '0' },
  { data: '2', status: '0' },
  { data: '3', status: '0' },
  { data: '4', status: '0' },
  { data: '5', status: '0' },
  { data: '6', status: '0' },
  { data: '7', status: '1' },
];

const count = storage.filter(function(item){
  if (item.status === 0) {
    return true;
  } else {
    return false;
  }
});

/*
[
  { data: '1', status: '0' },
  { data: '2', status: '0' },
  { data: '3', status: '0' },
  { data: '4', status: '0' },
  { data: '5', status: '0' },
  { data: '6', status: '0' }
] 
*/

Теперь, когда вы отфильтровывали объект с помощью Статус: «1» Просто позвоните в Длина () Метод на новом массиве, чтобы получить общее количество объектов с Статус: «1» :

const storage = [
  { data: '1', status: '0' },
  { data: '2', status: '0' },
  { data: '3', status: '0' },
  { data: '4', status: '0' },
  { data: '5', status: '0' },
  { data: '6', status: '0' },
  { data: '7', status: '1' },
];

const count = storage.filter(function(item){
  if (item.status === 0) {
    return true;
  } else {
    return false;
  }
}).length; // 6

Но это может быть много сокращено с синтаксисом ES6:

const storage = [
  { data: '1', status: '0' },
  { data: '2', status: '0' },
  { data: '3', status: '0' },
  { data: '4', status: '0' },
  { data: '5', status: '0' },
  { data: '6', status: '0' },
  { data: '7', status: '1' },
];

const count = storage.filter(item => item.status === '0').length; // 6

уменьшать()

Думать о Уменьшить () Метод, как швейцарский армейский нож – это чрезвычайно гибко, и позволяет взять на себя массив в качестве ввода и преобразовывать его в почти что угодно. Еще лучше, как Фильтр () Этот метод возвращает новый массив, оставляя оригинал без изменений.

Вы можете прочитать больше о Уменьшить () в Эта статья Отказ

Для наших целей мы хотим взять на себя массив, изучить его содержание и производить номер. Вот простой способ сделать это:

const storage = [
  { data: '1', status: '0' },
  { data: '2', status: '0' },
  { data: '3', status: '0' },
  { data: '4', status: '0' },
  { data: '5', status: '0' },
  { data: '6', status: '0' },
  { data: '7', status: '1' },
];

const count = storage.reduce((counter, obj) => {
  if (obj.status === '0') counter += 1
  return counter;
}, 0); // 6

Вы можете еще больше упростить с помощью синтаксиса ES6 и оператора Ternary:

const storage = [
  { data: '1', status: '0' },
  { data: '2', status: '0' },
  { data: '3', status: '0' },
  { data: '4', status: '0' },
  { data: '5', status: '0' },
  { data: '6', status: '0' },
  { data: '7', status: '1' },
];

const count = storage.reduce((counter, obj) => obj.status === '0' ? counter += 1 : counter, 0); // 6

И даже немного больше, используя деструктивность объекта:

const storage = [
  { data: '1', status: '0' },
  { data: '2', status: '0' },
  { data: '3', status: '0' },
  { data: '4', status: '0' },
  { data: '5', status: '0' },
  { data: '6', status: '0' },
  { data: '7', status: '1' },
];

const count = storage.reduce((counter, { status }) => status === '0' ? counter += 1 : counter, 0); // 6

Таким образом, это несколько способов пройти сквозь элементы массива и считать их условно. Теперь выйдите туда и рассчитывайте с уверенностью!

Оригинал: “https://www.freecodecamp.org/news/how-to-count-objects-in-an-array/”