通过数组索引为特定对象添加值

3
如何通过索引将“值”添加到特定的对象中的数组
我写了这个,但是它当然会在数组中创建一个新的对象,但我想要将“错误”插入到已有的具有索引(在屏幕上为0索引)的对象中。
ipcRenderer.on('fileData', (event, data) => {
    this.setState({jobs: [...this.state.jobs, {errors: data}]})
});

screen

然后我写了这个:
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 中创建一个新元素。

enter image description here

我希望结果像这样:
jobs: [
    0: {errors: 10, fileName:...}
]
3个回答

2
如果您知道索引,只需执行以下操作:
const jobs = this.state.jobs.slice(0);
jobs[index].errors = data;
this.setState({jobs});

可能不仅需要切片数组,还需要进行深拷贝,但是这样应该可以解决问题。


1
首先,您可以像这样复制您的数组:
let jobsCopy = this.state.jobs

然后,如果您知道索引,只需执行以下操作:
jobsCopy[index].errors = 10
this.setState({
    jobs: jobsCopy
})

0
你需要知道你想更改对象的索引。例如,如果你知道它是数组中的第一个项目,你可以这样做:
const indexToChange = 0
this.setState(prevState => prevState.map((obj, i) => {
    if(i === indexToChange) {
        return {
            ...obj,
            errors: data
        }
    } else {
        return obj
    }
}))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接