0
votes

Comment puis-je compter la quantité d'objets avec le même nom dans le tableau?

J'ai ce tableau et j'essaie d'obtenir le nombre d'objets avec le même nom nom code>. Comment puis-je atteindre cela? Peut-être dans la manière moderne "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'} 
];


2 commentaires

Vous pouvez rechercher l'utilisation de la méthode Array.Reduce. Voir développeur.mozilla.org/en-us / Docs / Web / JavaScript / Référence / ...


Est-ce que cela répond à votre question? Compter des occurrences de valeur de propriété particulière dans la matrice d'objets


4 Réponses :


0
votes
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)
This should do the trick!

0 commentaires

0
votes

Voici une solution pour vous:

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 commentaires

0
votes
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 commentaires

0
votes

Vous pouvez utiliser une fonction simple Réduire code>, qui ira déterrerait sur chaque objet et ajoute un au comte

p>

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 commentaires