检测数组中是否存在该数据
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
方法创建一个新数组,其中不包含该元素。然后返回更新后的数组。
请注意,这种方法只适用于原始数据类型(如数字、字符串、布尔值)的数组。如果数组包含对象或数组,你需要使用更复杂的比较逻辑来确定元素是否相等。