我正在选择文件并将数据推送到数组中,但是如果所选数据已经存在于数组中,我想将其删除。
我正在推送数据:
_setSelectedFile(file_uri, file_key){
let selectedFiles = [...this.state.selectedFiles];
selectedFiles.push({ file_uri: file_uri, file_key: file_key });
this.setState({ selectedFiles });
}
我的数组的输出是这样的:
[
{
file_uri: "ph://9F983DBA-EC35-42B8-8773-B597CF782EDD/L0/001",
file_key: "2"
},
{
file_uri: "ph://CC95F08C-88C3-4012-9D6D-64A413D254B3/L0/001",
file_key: "5"
}
]
稍后将file_key
存储为参考。我看到了这个答案Delete item from state array in react,但是由于讨论中的问题是指一维数组,因此不确定如何应用它。
答案 0 :(得分:0)
我尝试了一些技巧,显然在我的情况下有效。希望这也能帮助其他人。
_setSelectedFile(file_uri, file_key){
var isExist = false;
var selectedFileKey = null;
let selectedFiles = [...this.state.selectedFiles];
if(this.state.selectedFiles != null){
this.state.selectedFiles.map((data, i)=>{
if(data.file_key === file_key){
isExist = true;
selectedFileKey = i;
}
})
}
if(isExist == true){
selectedFiles.splice(selectedFileKey, 1);
this.setState({selectedFiles: selectedFiles});
} else {
selectedFiles.push({ file_uri: file_uri, file_key: file_key });
this.setState({ selectedFiles });
}
}
因此,我进行映射并检查数据是否已经存在,然后分配isExist = true
并存储键值selectedFileKey = i
。
在isExist
设置为true
的情况下,我可以继续从数组中删除数据。