У меня есть несколько раскрывающихся меню, я пытаюсь обновить значение объекта, если он существует в массиве
мой onChange выглядит следующим образом
onChange={e => {
const answer = {
id: questionChoice.id,
name: questionChoice.text,
value: e,
}
let newAnswer = {
...currentAnswer,
}
if (!currentAnswer.value) {
newAnswer.value = [] // init empty array
}
if (index in newAnswer.value) {
console.log('found')
console.log('here', index in newAnswer.value)
newAnswer.value = newAnswer.value.filter(item => item.value !== answer.value)
}
newAnswer.value = [...newAnswer.value, { [questionChoice.text]: answer.value }]
console.log('new answer', newAnswer)
updateCurrent(newAnswer)
}}
optionFilterProp="children"
onFocus={onFocus}
onBlur={onBlur}
filterOption={(input, option) =>
option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0
}
>
мой текущий результат таков
newAnswer.value: [
0: {Inform producers about the range of sustainability practices: "1"}
1: {Inform producers about environmental management: "7"}
2: {Provide mentoring services to new advisors: "12"}
3: {Inform producers about the range of sustainability practices: "2"}
]
ожидаемый результат будет
newAnswer.value: [
0: {Inform producers about the range of sustainability practices: "2"}
1: {Inform producers about environmental management: "7"}
2: {Provide mentoring services to new advisors: "12"}
]
Прямо сейчас он добавляет любой новый результат из newAnswer.value = [...newAnswer.value, { [questionChoice.text]: answer.value }]
Однако я нахожу правильный объект с помощью
if (index in newAnswer.value) {
console.log('found')
// replace object here
newAnswer.value = newAnswer.value.filter(item => item.value !== answer.value)
}
Просто не знаю, как изменить специфику c объектов на месте