@Kirill1973

Как изменить значение свойства объекта, вложенного в массив объектов, который вложен в объект, являющийся элементом массива объектов?

Есть такой массив объектов:

const products = 
[
  {
    id: '1',
    cards: 
    [
      {
        id: '1',
        src: '',
        alt: '',
        price: 0,
        title: '',
        quantity: 1     
      },
      {
        id: '2',
        src: '',
        alt: '',
        price: 0,
        title: '',
        quantity: 1    
      },
      {
        id: '3',
        src: '',
        alt: '',
        price: 0,
        title: '',
        quantity: 1     
      },
      {
        id: '4',
        src: '',
        alt: '',
        price: 0,
        title: '',
        quantity: 1     
      },
    ]
  },
...
  {
    id: '64',
    cards: 
    [
      {
        id: '253',
        src: '',
        alt: '',
        price: 0,
        title: '',
        quantity: 1     
      },
      {
        id: '254',
        src: '',
        alt: '',
        price: 0,
        title: '',
        quantity: 1     
      },
      {
        id: '255',
        src: '',
        alt: '',
        price: 0,
        title: '',
        quantity: 1     
      },
      {
        id: '256',
        src: '',
        alt: '',
        price: 0,
        title: '',
        quantity: 1     
      },
    ]
  },
]


При совпадении id выбранной карточки с card.id значение ключа quantity должно изменяться. Из-за глубокой вложенности объекта карточки не получается добиться нужного результата. Помогите, пожалуйста, разобраться в этом.
  • Вопрос задан
  • 223 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега React
setProducts(products => products.map(n => {
  const card = n.cards.find(m => m.id === id);
  return card
    ? {
        ...n,
        cards: n.cards.map(m => m === card
          ? { ...m, quantity: newQuantity }
          : m
        ),
      }
    : n
}));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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