业务上有时候需要维护一个数组,通过查找数组中有无,和添加删除来确定状态
这里涉及到3个知识数组删除,数组去重和数组查找
先说数组删除
//1.使用splice()方法删除指定值
let arr = [1, 2, 3, 4, 5];
let valueToRemove = 3;
let index = arr.indexOf(valueToRemove);
if (index !== -1) {
arr.splice(index, 1);
}
console.log(arr); // [1, 2, 4, 5]
// 2.使用filter()方法过滤掉指定值
let arr = [1, 2, 3, 4, 5];
let valueToRemove = 3;
arr = arr.filter(item => item !== valueToRemove);
console.log(arr); // [1, 2, 4, 5]
// 3.使用forEach()方法遍历数组,将不等于指定值的元素添加到新数组中
let arr = [1, 2, 3, 4, 5];
let valueToRemove = 3;
let newArr = [];
arr.forEach(item => {
if (item !== valueToRemove) {
newArr.push(item);
}
});
console.log(newArr); // [1, 2, 4, 5]
数组添加push就好,如果需要去重
// 1.利用Set数据结构去重
const arr = [1, 2, 3, 4, 5, 3, 2];
const set = new Set(arr);
const result = Array.from(set);
console.log(result); // [1, 2, 3, 4, 5]
// 2.双重循环去重
const arr = [1, 2, 3, 4, 5, 3, 2];
const result = [];
for (let i = 0; i < arr.length; i++) {
if (result.indexOf(arr[i]) === -1) {
result.push(arr[i]);
}
}
console.log(result); // [1, 2, 3, 4, 5]
// 3.利用数组的filter方法去重 indexOf只返回第一个
const arr = [1, 2, 3, 4, 5, 3, 2];
const result = arr.filter((item, index) => arr.indexOf(item) === index);
console.log(result); // [1, 2, 3, 4, 5]
// 4.利用数组的reduce方法去重
const arr = [1, 2, 3, 4, 5, 3, 2];
const result = arr.reduce((prev, cur) => {
if (!prev.includes(cur)) {
prev.push(cur);
}
return prev;
}, []);
console.log(result); // [1, 2, 3, 4, 5]