javascript: запись значения в ассоциативный массив в одну строку

Рейтинг: 0Ответов: 1Опубликовано: 02.03.2023

Есть такой код:

    let tmp: any = this.state.states;
    tmp[event.target.id] = event.target.checked;

    this.setState({
        states: tmp
    });

Подскажите, как бы в 1 строчку покрасивее сформировать tmp массив, т.е. что-то типа

    this.setState({
        states: [...this.state.states, event.target.id: event.target.checked]
    });

Ответы

▲ 1Принят

как бы в 1 строчку покрасивее сформировать tmp массив, т.е. что-то типа

Так и запиши...

this.setState(old => {
    return {...old.states, [event.target.id]: event.target.checked}
});

Или так

this.setState(old => ({...old.states, [event.target.id]: event.target.checked}));

Тест

let obj = {'xxx': 10, 'yyy': 11}
obj = {...obj, 'yyy': 12}
console.log(obj)