Как я могу подсчитать количество объектов с одинаковым именем в массиве? - PullRequest
0 голосов
/ 18 июня 2020

У меня есть этот массив, и я пытаюсь получить количество объектов с тем же свойством name. Как я могу этого достичь? Может по-современному "es6"

let cars = [
    {id: 1, name: 'Mercedes', year: '2015'},
    {id: 2, name: 'Mercedes', year: '2000'},
    {id: 3, name: 'BMW', year: '2010'},
    {id: 4, name: 'BMW', year: '2004'},
    {id: 5, name: 'Volvo', year: '2012'},
    {id: 6, name: 'Volvo', year: '2014'} 
];

Ответы [ 4 ]

0 голосов
/ 18 июня 2020

Вы можете использовать простую функцию reduce, которая будет перебирать каждый объект и добавлять единицу к счетчику

let cars = [
  { id: 1, name: "Mercedes", year: "2015" },
  { id: 2, name: "Mercedes", year: "2000" },
  { id: 3, name: "BMW", year: "2010" },
  { id: 4, name: "BMW", year: "2004" },
  { id: 5, name: "Volvo", year: "2012" },
  { id: 6, name: "Volvo", year: "2014" }
];

let count = cars.reduce((acc, child) => {
  acc[child.name] = (acc[child.name] || 0) + 1;
  return acc;
}, {});

console.log(count);
0 голосов
/ 18 июня 2020

вот решение для вас:

let cars = [
  { id: 1, name: "Mercedes", year: "2015" },
  { id: 2, name: "Mercedes", year: "2000" },
  { id: 3, name: "BMW", year: "2010" },
  { id: 4, name: "BMW", year: "2004" },
  { id: 5, name: "Volvo", year: "2012" },
  { id: 6, name: "Volvo", year: "2014" },
];

let numbers = cars.reduce((acc, child) => {
  if (!acc[child.name]) {
    acc[child.name] = 0;
  }
  acc[child.name]++;
  return acc;
}, {});

console.log(numbers);

0 голосов
/ 18 июня 2020
let cars = [
    {id: 1, name: 'Mercedes', year: '2015'},
    {id: 2, name: 'Mercedes', year: '2000'},
    {id: 3, name: 'BMW', year: '2010'},
    {id: 4, name: 'BMW', year: '2004'},
    {id: 5, name: 'Volvo', year: '2012'},
    {id: 6, name: 'Volvo', year: '2014'} 
];

let obj = {}

cars.forEach((item) => {
  console.log(obj[item.name])
  if (!obj[item.name]) {
    obj[item.name] = 1;
  } else {
    obj[item.name] += 1;
  }
})

console.log(obj)
0 голосов
/ 18 июня 2020
let counterObj = {}

let cars = [
    {id: 1, name: 'Mercedes', year: '2015'},
    {id: 2, name: 'Mercedes', year: '2000'},
    {id: 3, name: 'BMW', year: '2010'},
    {id: 4, name: 'BMW', year: '2004'},
    {id: 5, name: 'Volvo', year: '2012'},
    {id: 6, name: 'Volvo', year: '2014'} 
];


for (property of cars){
    counterObj[property.name] = 1 + (counterObj[property.name] || 0)
}

console.log(counterObj)

Это должно сработать!

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