Как обновить данные с помощью спред-оператора

Пытаюсь с помощью конструкции

const handle = id => {
   setValue([...updated, { id: id, value: 0 }])
}

и использования спред-оператора добавить/обновить строку, но получаю дублирование строки, если значение id уже существует:

[
    0: {id: 1, value: 0}
    1: {id: 1, value: 0}
]

Прошу подсказать, как получить результат без дублирования, а также можно ли одновременно изменить значение value на противоположное так, чтобы получился такой результат:

[
    0: {id: 1, value: 1}
]

Ответы (1 шт):

Автор решения: p1uton

Нужно найти в массиве элемент с определенным id и изменить у него значение value с 0 на 1 (или с 1 на 0):

const handle = id => {
  setValue(prev =>
    prev.map(item =>
      item.id === id
        ? {
          ...item,
          value: 1 - value
        }
        : item
    )
  )
}
→ Ссылка