Как узнать сколько раз определенное свойство обьекта было использовано в массиве обьектов

function usersCountByCity(users) {}
const users = [
  {
    id: 888,
    name: 'Denis',
    age: 44,
    city: 'Kyiv',
  },
  {
    id: 333,
    name: 'Alex',
    age: 33,
    city: 'Lviv',
  },
  {
    id: 392,
    name: 'Nastya',
    age: 22,
    city: 'Kyiv',
  },
  {
    id: 123,
    name: 'Violetta',
    age: 15,
    city: 'Odesa',
  },
  {
    id: 640,
    name: 'Mykola',
    age: 31,
    city: 'Lviv',
  },
]

console.log(usersCountByCity(users))

В консоле должно быть { 'Kyiv': 2, 'Lviv': 2, 'Odesa': 1 }


Ответы (2 шт):

Автор решения: ya_ilya
function usersCountByCity(usersArray) {
  let cities = {}

  usersArray.forEach(it => {
    cities[it["city"]] = (cities[it["city"]] ?? 0) + 1
  })

  return cities
}

const users = [
  {
    id: 888,
    name: 'Denis',
    age: 44,
    city: 'Kyiv',
  },
  {
    id: 333,
    name: 'Alex',
    age: 33,
    city: 'Lviv',
  },
  {
    id: 392,
    name: 'Nastya',
    age: 22,
    city: 'Kyiv',
  },
  {
    id: 123,
    name: 'Violetta',
    age: 15,
    city: 'Odesa',
  },
  {
    id: 640,
    name: 'Mykola',
    age: 31,
    city: 'Lviv',
  },
]

console.log(usersCountByCity(users))

Вывод:

{Kyiv: 2, Lviv: 2, Odesa: 1}
→ Ссылка
Автор решения: Deonis

const usersCountByCity = a => a.reduce((a, c) => (a[c.city] = ++a[c.city] || 1, a), {});

const users = [{
    id: 888,
    name: 'Denis',
    age: 44,
    city: 'Kyiv',
  },
  {
    id: 333,
    name: 'Alex',
    age: 33,
    city: 'Lviv',
  },
  {
    id: 392,
    name: 'Nastya',
    age: 22,
    city: 'Kyiv',
  },
  {
    id: 123,
    name: 'Violetta',
    age: 15,
    city: 'Odesa',
  },
  {
    id: 640,
    name: 'Mykola',
    age: 31,
    city: 'Lviv',
  },
]

console.log(usersCountByCity(users));

→ Ссылка