跳转至

检测数组中是否存在该数据

js数组添加数据,push的时候先检查,如果存在就删除数组中所有该元素,不存在就添加

案例

如果你不需要将这个逻辑封装成一个函数,那么可以直接在需要的地方使用以下代码:

let myArray = [1, 2, 3, 4, 5];
let elementToAddOrRemove = 3;

// 检查元素是否存在
if (myArray.includes(elementToAddOrRemove)) {
  // 存在,删除所有该元素
  myArray = myArray.filter(e => e !== elementToAddOrRemove);
} else {
  // 不存在,添加元素
  myArray.push(elementToAddOrRemove);
}

console.log(myArray);

这段代码直接在数组上运行,使用includes方法检查元素是否存在于数组中。根据检查结果,它要么使用filter方法移除所有匹配的元素,要么使用push方法添加一个新元素。最后打印出修改后的数组。

封装

在JavaScript中,如果你想要在数组中添加一个元素,并且在添加之前检查该元素是否已经存在于数组中,如果存在则删除所有该元素,不存在则添加,你可以使用以下逻辑:

function toggleElementInArray(array, element) {
  const index = array.indexOf(element);
  if (index === -1) {
    // 不存在,添加元素
    array.push(element);
  } else {
    // 存在,删除所有该元素
    return array.filter(e => e !== element);
  }
  return array;
}

// 示例用法
let myArray = [1, 2, 3, 4, 5];

myArray = toggleElementInArray(myArray, 2); // 删除2,现在数组是 [1, 3, 4, 5]
myArray = toggleElementInArray(myArray, 6); // 添加6,现在数组是 [1, 3, 4, 5, 6]

在这个例子中,toggleElementInArray函数接受一个数组和一个元素作为参数。它首先检查元素是否在数组中。如果不在,就使用push方法添加它。如果在,就使用filter方法创建一个新数组,其中不包含该元素。然后返回更新后的数组。

请注意,这种方法只适用于原始数据类型(如数字、字符串、布尔值)的数组。如果数组包含对象或数组,你需要使用更复杂的比较逻辑来确定元素是否相等。