Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.05.2022, 13:27
Профессор
Отправить личное сообщение для NovichokJS Посмотреть профиль Найти все сообщения от NovichokJS
 
Регистрация: 25.04.2022
Сообщений: 159

Получить свойства объекта
Пытаюсь решать задачку, но не получается. Помогите!

На выходе нужно получить:

{ '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));
Ответить с цитированием
  #2 (permalink)  
Старый 09.05.2022, 13:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

NovichokJS,
function usersCountByCity(users) {
            let object = {};
            for (const {
                    city
                } of users) {
                object[city] ??= 0;
                object[city] += 1;

            }
            return object;
        }
Ответить с цитированием
  #3 (permalink)  
Старый 09.05.2022, 13:41
Профессор
Отправить личное сообщение для NovichokJS Посмотреть профиль Найти все сообщения от NovichokJS
 
Регистрация: 25.04.2022
Сообщений: 159

object[city] ??= 0;
^

SyntaxError: Unexpected token ?
at Module._compile (internal/modules/cjs/loader.js:723:23)
Ответить с цитированием
  #4 (permalink)  
Старый 09.05.2022, 13:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

NovichokJS,
function usersCountByCity(users) {
            let object = {};
            for (const {
                    city
                } of users) {
                object[city] = (object[city]||0) + 1;
            }
            return object;
        }
Ответить с цитированием
  #5 (permalink)  
Старый 09.05.2022, 13:53
Профессор
Отправить личное сообщение для NovichokJS Посмотреть профиль Найти все сообщения от NovichokJS
 
Регистрация: 25.04.2022
Сообщений: 159

круто, спасибо! а объясните пожалуйста, а то не понятен контекст.
Ответить с цитированием
  #6 (permalink)  
Старый 09.05.2022, 13:57
Профессор
Отправить личное сообщение для NovichokJS Посмотреть профиль Найти все сообщения от NovichokJS
 
Регистрация: 25.04.2022
Сообщений: 159

не пойму это выражения:
(object[city] || 0) + 1;
Ответить с цитированием
  #7 (permalink)  
Старый 09.05.2022, 13:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

NovichokJS,
что объяснять: цикл по всем элементам массива, из элемента извлекли название города, посмотрели есть ли в объекте свойство с таким названием, если нет, создали свойство и присвоили нуль, увеличили значение свойства на 1, вернули объект.
Ответить с цитированием
  #8 (permalink)  
Старый 09.05.2022, 14:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от NovichokJS
(object[city] || 0) + 1;
если есть значение в object[city] используем его, иначе берём нуль для расчёта.
Ответить с цитированием
  #9 (permalink)  
Старый 09.05.2022, 14:00
Профессор
Отправить личное сообщение для NovichokJS Посмотреть профиль Найти все сообщения от NovichokJS
 
Регистрация: 25.04.2022
Сообщений: 159

понял теперь, благодарю.
Ответить с цитированием
  #10 (permalink)  
Старый 09.05.2022, 14:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

NovichokJS,
тоже самое
function usersCountByCity(users) {
            let object = {};
            for (const {
                    city
                } of users) {
                if(city in object) object[city] += 1;
                else object[city] = 1;
            }
            return object;
        }


все три предложенных кода выше, одно и тоже.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Свойства объекта, взятые из свойств этого же объекта. nklf-367 Общие вопросы Javascript 2 17.10.2017 17:36
При вызове локальной функции объекта не могу использовать свойства объекта Gudsaf Общие вопросы Javascript 7 17.09.2016 20:23
IE 8 Не удалось получить значение свойства "match": значением объекта является null abstract Internet Explorer 2 26.08.2011 15:27
Как получить список пользовательских функций объекта window? Маэстро Events/DOM/Window 13 03.07.2010 13:20
Можно ли получить имя экземпляра объекта внутри самого объекта? Ichigeki Общие вопросы Javascript 9 14.11.2008 19:00