繁体   English   中英

通过数组索引向数组中的特定对象添加值

[英]add value to specific object in array by index of array

如何通过index将特定object值添加到array

我写了这个,但当然,它在array创建了一个新object ,但我想将“错误”插入到具有index的现有object (在屏幕上它为 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:...}
]

如果你知道索引,你可以做

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
    }
}))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM