Я не первый, но вот моя версия с тестом
static changeAnswers = ({target: {name, value, checked}}) =>
checked
? { ...answeredTasks, ...{ [name]: [...(answeredTasks[name] || []), value] } }
: {
...answeredTasks,
...{ [name]: (answeredTasks[name] || []).filter(e => e !== value) }
}
checkBoxOnChange = e => {
const {answeredTasks} = this.state
this.setState({answeredTasks: myComponent.changeAnswers(e)})
}
const answeredTasks = { "1": ["green", "blue", "red"] }
const elements = [
{ name: "1", value: "green", checked: false },
{ name: "1", value: "black", checked: true },
{ name: "2", value: "lol", checked: true },
{ name: "2", value: "lol", checked: false }
]
const click = ({ name, value, checked }) =>
checked
? { ...answeredTasks, ...{ [name]: [...(answeredTasks[name] || []), value] } }
: {
...answeredTasks,
...{ [name]: (answeredTasks[name] || []).filter(e => e !== value) }
}
elements.map(element => console.log(click(element)))