Хорошо, у меня есть 2 массивов:преобразовать массив объектами
var state = {
users: [
{id: 1, name: 'Igor'},
{id: 2, name: 'Anton'},
{id: 3, name: 'Vasya'},
{id: 4, name: 'Pete'},
{id: 5, name: 'Dan'}
],
chats: [
{id: 1, users: [1,2], owner: 1},
{id: 2, users: [1,2,3], owner: 2},
{id: 3, users: [3,4,5], owner: 5}
]
}
Мне нужна функция, которая возвращает массив как «чаты», но с реальными именами, а не идентификаторами. До сих пор я получил это:
function loadChats() {
return state.chats.map(item =>
({
id: item.id,
users: item.users.map(user =>
state.users.find(usr =>
usr.id === user).name),
owner: item.owner
})
)
}
Но я донк думаю, что решение хорошо, потому что мы не должны отобразить весь массив, просто «пользователи» в нем. Так может ли кто-нибудь предложить лучшее решение? я думал сделать что-л так:
...
state.chats.forEach(item =>
item.users.map(user =>
state.users.find(usr =>
usr.id === user)
)
)
...
Но я не люблю использовать Foreach, есть ли лучшее решение?
Ваше состояние объекта в вашем примере это неправильно. 'users' и' chats' должны быть назначены с помощью ':' not '='. – AdamJeffers
@AdamJeffers Да, я знаю, это была опечатка. Исправлено. –
. Истины @Tushar не будут численными и упорядоченными, это просто пример, они будут случайной комбинацией из 6 символов. –