Получить свойства объекта
Пытаюсь решать задачку, но не получается. Помогите!
На выходе нужно получить: { 'Kyiv': 2, 'Lviv': 2, 'Odesa':} Код: function usersCountByCity(users) { let object = {}; let count = 0; for (const i in users) { object = [users[i].city, count]; count++; } return object; } // 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(usersCountByCity(users)); |
NovichokJS,
function usersCountByCity(users) { let object = {}; for (const { city } of users) { object[city] ??= 0; object[city] += 1; } return object; } |
object[city] ??= 0;
^ SyntaxError: Unexpected token ? at Module._compile (internal/modules/cjs/loader.js:723:23) |
NovichokJS,
function usersCountByCity(users) { let object = {}; for (const { city } of users) { object[city] = (object[city]||0) + 1; } return object; } |
круто, спасибо! а объясните пожалуйста, а то не понятен контекст.
|
не пойму это выражения:
(object[city] || 0) + 1; |
NovichokJS,
что объяснять: цикл по всем элементам массива, из элемента извлекли название города, посмотрели есть ли в объекте свойство с таким названием, если нет, создали свойство и присвоили нуль, увеличили значение свойства на 1, вернули объект. |
Цитата:
|
понял теперь, благодарю.
|
NovichokJS,
тоже самое function usersCountByCity(users) { let object = {}; for (const { city } of users) { if(city in object) object[city] += 1; else object[city] = 1; } return object; } все три предложенных кода выше, одно и тоже. |
Часовой пояс GMT +3, время: 02:47. |