добавить значение к конкретному объекту в массиве по индексу массива

Как добавить значение для конкретного object в array по index ?

Я написал это, но, конечно, он создает новый object в array , но я хочу вставить «ошибки» в существующий object с index (на экране это 0 индекс)

ipcRenderer.on('fileData', (event, data) => {
    this.setState({jobs: [...this.state.jobs, {errors: data}]})
});

экран

Тогда я написал это:

ipcRenderer.on('fileData', (event, data) => {
    this.state.jobs.forEach((item, index) => {
        this.setState({jobs: [...this.state.jobs, {errors: item[index] = data}]
    })
    console.log(this.state)
    })
});

Он вставляет значение в object , но без имени, и все равно создает новый элемент в array

введите описание изображения здесь

Я хочу, чтобы результат был таким:

jobs: [
    0: {errors: 10, fileName:...}
]

Всего 3 ответа

Автоматический диспенсер мыльной пены от xiaomi.


Если вы знаете индекс, вы можете просто сделать

const jobs = this.state.jobs.slice(0);
jobs[index].errors = data;
this.setState({jobs});

Возможно, придется сделать больше, чем нарезать массив, возможно, придется сделать глубокую копию, но да, это должно сработать.


Во-первых, вы можете сделать копию вашего массива как

let jobsCopy = this.state.jobs

Тогда, если вы знаете индекс, вы можете просто сделать как

jobsCopy[index].errors = 10
this.setState({
    jobs: jobsCopy
})

Вам нужно знать индекс объекта, который вы хотите изменить. Например, если вы знаете, что это первый элемент в массиве, вы можете сделать это:

const indexToChange = 0
this.setState(prevState => prevState.map((obj, i) => {
    if(i === indexToChange) {
        return {
            ...obj,
            errors: data
        }
    } else {
        return obj
    }
}))

Есть идеи?

10000