Javascript.RU

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

Получить массив имен и айдишников через классы
class User {
  constructor(id, name, sessionId) {
    this.id = id;
    this.name = name;
    this.sessionId = sessionId;
  }
}

class UserRepository {

  constructor(users) {
    this.users = users;
    Object.freeze(users);
  }


  getUserNames() {
    return this.users.map(this.name);
  }

  getUserIds() {
    return this.users.map(this.id);
  }

  getUserNameById() {
    return this.users.map(this.sessionId);
  }
}

// examples
const user = new User('1', 'Jack', 'session-id');


Мне нужно в методы getUserNames, getUserIds и getUserNameById сохранять(получать) массив соответственно имен, айди и имен по айдишнику. Поле users тут - это как бы array[User] - массив объектов пользователей.
Помогите доделать код пожалуйста.
Ответить с цитированием
  #2 (permalink)  
Старый 05.07.2022, 15:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

NovichokJS,
class User {
  constructor(id, name, sessionId) {
    this.id = id;
    this.name = name;
    this.sessionId = sessionId;
  }
}

class UserRepository {
  users = [];
  constructor(users) {
    this.users.push(...users);
  }


  getUserNames() {
    return this.users.map(({name}) => name);
  }

  getUserIds() {
    return this.users.map(({id}) => id);
  }

  getUserNameById() {
    return this.users.map(({sessionId}) => sessionId);
  }
}

// examples
const user = new User('1', 'Jack', 'session-id');
const user2 = new User('2', 'Jack2', 'session-id2');


const repository = new UserRepository([user, user2]);
console.log(repository.getUserNames())
Ответить с цитированием
  #3 (permalink)  
Старый 05.07.2022, 15:35
Профессор
Отправить личное сообщение для NovichokJS Посмотреть профиль Найти все сообщения от NovichokJS
 
Регистрация: 25.04.2022
Сообщений: 159

Спасибо, я там ставил Object.freeze(users) - мне просто нужно запретить мутацию массива users. Как это указать корректно в коде?
Ответить с цитированием
  #4 (permalink)  
Старый 05.07.2022, 15:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

NovichokJS,
constructor(users) {
    this.users.push(...users);
    Object.freeze(this.users)
  }
Ответить с цитированием
  #5 (permalink)  
Старый 05.07.2022, 16:37
Профессор
Отправить личное сообщение для NovichokJS Посмотреть профиль Найти все сообщения от NovichokJS
 
Регистрация: 25.04.2022
Сообщений: 159

Спасибо!
Ответить с цитированием
  #6 (permalink)  
Старый 05.07.2022, 17:03
Профессор
Отправить личное сообщение для NovichokJS Посмотреть профиль Найти все сообщения от NovichokJS
 
Регистрация: 25.04.2022
Сообщений: 159

Рони, а как сделать чтобы этот метод getUserNameById() возвращал имя пользователя по его id?
Ответить с цитированием
  #7 (permalink)  
Старый 05.07.2022, 17:04
Профессор
Отправить личное сообщение для NovichokJS Посмотреть профиль Найти все сообщения от NovichokJS
 
Регистрация: 25.04.2022
Сообщений: 159

понимаю точно что не через map, который нам возвращает массив
Ответить с цитированием
  #8 (permalink)  
Старый 05.07.2022, 17:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

NovichokJS,
getUserNameById(i) {
    return this.users.find(({id}) => i === id)?.name;
  }
Ответить с цитированием
  #9 (permalink)  
Старый 05.07.2022, 18:01
Профессор
Отправить личное сообщение для NovichokJS Посмотреть профиль Найти все сообщения от NovichokJS
 
Регистрация: 25.04.2022
Сообщений: 159

круто, спасибо
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить массив из заголовков h2, h3, h4, h5, h6 MC-XOBAHCK Общие вопросы Javascript 3 13.04.2021 09:08
Как получить новый массив после сравнения 2-х исходных komplekt_17 Общие вопросы Javascript 5 05.09.2019 13:02
Получить массив из из массива объектов gunner17 Общие вопросы Javascript 2 07.03.2019 13:31
jqGrid - получить массив записей treef jQuery 0 10.02.2011 12:13
Как получить имя компа через JavaScript? Бурундук Общие вопросы Javascript 3 19.09.2009 16:44