Задать вопрос
Dazle_PrG
@Dazle_PrG
WEB программист

Как добавить в массив объектов другой массив объектов?

Есть 2 массива: цветы и комментарии к ним:
let flover =[{"id": 1,"name": "цветок 1"},{"id": 2,"name": "цветок 2"}];
let komment =[{"id": 1,"mes": "комент 1"},{"id": 1,"mes": "комент 2"},{"id": 2,"mes": "комент 3"}];

Мне нужно чтобы у каждого товара(цветка) были свои комментарии они подразделяются по id. Первые два комента будут у первого цветка, последний у второго.

for(let i = 0;i<flover.length;i++) {

for(let j = 0;j<komment.length;j++) {

    if(flover[i].id == komment[j].id) { flover[i].komment = komment[j]; } 

}
} 

kommentfilm2.innerHTML += JSON.stringify(flover);

В итоге не добавляется 1 комментарий в массиве:
[{"id":1,"name":"цветок 1","komment":{"id":1,"mes":"комент 2"}},{"id":2,"name":"цветок 2","komment":{"id":2,"mes":"комент 3"}}]
Изменяю на: flover[i].komment += komment[j]; получается:
[{"id":1,"name":"цветок 1","komment":"undefined[object Object][object Object]"},{"id":2,"name":"цветок 2","komment":"undefined[object Object]"}]
И под конец хотелось бы чтобы "komment":{"id":1,"mes":"комент 2"} был массивом объектов: "komment":[{"id":1,"mes":"комент 2"},{...}]
  • Вопрос задан
  • 232 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Академия Эдюсон
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
  • Skillbox
    JavaScript
    3 месяца
    Далее
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
flover.forEach((f) => f.komment = komment.filter((k) => k.id === f.id))

Правильно, конечно, flowers и comments
Ответ написан
Комментировать
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
for (let i = 0; i < flover.length; i++) {
    for (let j = 0; j < komment.length; j++) {
        if (flover[i].id == komment[j].id) {
            if (flover[i].komments == undefined) {
                flover[i].komments = [];
            }
            flover[i].komments.push(komment[j]);
        }
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы