Посчитать данные с объекта

Допустим у нас есть массив юзеров виде объектов у которых есть свойство город. Нам нужно написать функцию которая вернет объект где будет написан ключ конкретный город и значение сколько юзеров имеет в виде свойства данный город.

    // examples
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',
  },
];

сountByCity(users); // ===> { 'Kyiv': 2, 'Lviv': 2, 'Odesa': 1 }


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

Автор решения: Oliver Patterson

В следующий раз, хотя бы попытайтесь сделать что-то сами. Прочитайте про метод reduce.

// examples
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(сountByCity(users)); // ===> { 'Kyiv': 2, 'Lviv': 2, 'Odesa': 1 }

function сountByCity(data)
{
    return data.reduce((obj, {city}) =>
    {
        if (typeof obj[city] !== "undefined")
        {
            obj[city] += 1;
        }
        else
        {
            obj[city] = 1;
        }

        return obj;
    }, {});
}

→ Ссылка