簡體   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