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

时间:2020-01-15 14:03:09

标签: javascript arrays reactjs

如何通过objectarray的特定index增加价值?

我写了这个,但是当然,它在object中创建了一个新的array,但是我想使用object向现有index插入“错误” (在屏幕上为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 个答案:

答案 0 :(得分:2)

如果您知道索引,就可以这样做

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

除了对数组进行切片外,可能还需要做更多的事情,但可能必须做一个深拷贝,但这是可行的。

答案 1 :(得分:1)

首先,您可以像复制数组一样

let jobsCopy = this.state.jobs

然后,如果您知道索引,就可以喜欢

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

答案 2 :(得分:0)

您将需要知道要更改的对象的索引。例如,如果您知道它是数组中的第一项,则可以执行以下操作:

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