如何通过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:...}
]
答案 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
}
}))