在React Native中从数组中删除数据

时间:2019-06-11 12:37:15

标签: arrays react-native filter

我正在选择文件并将数据推送到数组中,但是如果所选数据已经存在于数组中,我想将其删除。

我正在推送数据:

_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,但是由于讨论中的问题是指一维数组,因此不确定如何应用它。

1 个答案:

答案 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的情况下,我可以继续从数组中删除数据。