Получить массив имен и айдишников через классы
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] - массив объектов пользователей. Помогите доделать код пожалуйста. |
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())
|
Спасибо, я там ставил Object.freeze(users) - мне просто нужно запретить мутацию массива users. Как это указать корректно в коде?
|
NovichokJS,
constructor(users) {
this.users.push(...users);
Object.freeze(this.users)
}
|
Спасибо!
|
Рони, а как сделать чтобы этот метод getUserNameById() возвращал имя пользователя по его id?
|
понимаю точно что не через map, который нам возвращает массив
|
NovichokJS,
getUserNameById(i) {
return this.users.find(({id}) => i === id)?.name;
}
|
круто, спасибо
|
| Часовой пояс GMT +3, время: 16:20. |