[英]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.