如果存在则从数组中删除值,如果不存在则将其推送到数组

Tom*_*ach 3 javascript arrays

我有一个数组定义如下:

selectedDocumentID = [];
Run Code Online (Sandbox Code Playgroud)

接下来,当我获取 ID 时,我有一个函数,以及我将 id 作为参数提供的其他函数。当我点击带有 id 的元素时,这个 id 将进入这个modifyArray。接下来,我使用 console.log 检查 id(它正在工作,我得到了 id)。之后,我创建一个新的数组列表,其中包含 selectedDocument 数组。(这行得通)。我想推送一个 id(如果它不存在)或如果存在(如果存在)将其从列表中切片...

modifyArray(id) {
  let selectedDocumentID = [];

  let id = 10;

  console.log('this is: ' + id);
  console.log(this.selectedDocumentID);
  let list = this.selectedDocumentID;

  let index = list.findIndex( x => x === id);
  console.log(index);
  if (index !== id) {
    list.push(id);
    console.log(list);
    this.selectedDocumentID = list;
  }
  else {
    list = list.slice(list.indexOf(id));
    console.log(list);
    this.selectedDocumentID = list;
  }
}
Run Code Online (Sandbox Code Playgroud)

例如。我单击 id 为 2,4,5,6 的文档。

我的 selectedDocumentID = [2,4,5,6] 和列表也有 [2,4,5,6]。

接下来,我单击 id 8 的文档,我的数组 = [2,4,5,6,8],之后我单击 id 5 的文档,我的数组看起来像 [2,4,6,8]。我做错了什么?

代码示例:

ns1*_*s16 5

您可以使用xor lodash 函数来使代码更简单。例如:

modifyArray(id) {
  this.selectedDocumentID = _.xor(this.selectedDocumentID, [id]);
}
Run Code Online (Sandbox Code Playgroud)