分享数组去重的五种方式
数组去重的五种方式
<script>
// 1 indexOf() 数组中查找元素的第一个索引,有返回值,没有返回 -1
let arr = [1, 2, 3, 4, 3, 2, 4, 6, 8, 6];
let newArr = [];
function deduplication(array) {
for (let i = 0; i < array.length; i++) {
// 在新数组中查找 去重数组的每个值 indexOf()
if (newArr.indexOf(array[i]) === -1) {
newArr.push(array[i]);
}
}
return newArr;
}
const res = deduplication(arr);
console.log(res);
// 2, sort 先把数组 排序,相同的元素在一起,再进行前后元素的比较,
// 如果前后值不相等,把后值push到新数组中
let arr = [1, 2, 3, 4, 3, 2, 4, 6, 8, 6];
let newArr = [];
function deduplication(array) {
arr = arr.sort();
let newArr = [arr[0]]; // 先把第一数组的元素赋值给新数组
for (let i = 1; i < array.length; i++) {
if (array[i - 1] !== array[i]) {
newArr.push(array[i]); // 这样就不能获得第一个元素
}
}
return newArr;
}
const res = deduplication(arr);
console.log(res);
// 3 filter 采用过滤器 返回true 把当前值存放到新数组中 false不存放 ,
// 然后利用 indexOf(index ,0(从那个位置开始)) 查找数组中元素的第一个索引值
let arr = [1, 2, 3, 4, 3, 2, 4, 6, 8, 6];
let newArr = [];
function deduplication(array) {
newArr = arr.filter((item, index, array) => {
// 查找数组中 元素的第一个索引值 ,如果有重复的 比较索引值时,
// 仅仅拿元素的第一个索引值来与 filter中的item,的index 进行比较,肯定不相等 返回false
return array.indexOf(item, 0) === index;
});
return newArr;
}
const res = deduplication(arr);
console.log(res);
// 4 includes 查找数组中是否包含某一个值,包含返回true,否则返回false
let arr = [1, 2, 3, 4, 3, 2, 4, 6, 8, 6];
let newArr = [];
function deduplication(array) {
for (let i = 0; i < array.length; i++) {
// 查找 新数组中是否包含 需要去重数组的每个元素 不包含 取反,然后把改元素push到新数组
if (!newArr.includes(array[i])) {
newArr.push(array[i]);
}
}
return newArr;
}
const res = deduplication(arr);
console.log(res);
// 5, // [Array.from()] :把伪数组或可迭代对象转换为数组
// [new Set()] :把数组中重复的值去掉,返回一个Set 实例对象
let arr = [1, 2, 3, 4, 3, 2, 4, 6, 8, 6];
let newArr = [];
function deduplication(array) {
// 把数组去重
const setter = new Set(array)
// 把 对象转换为 数组
newArr = Array.from(setter)
return newArr;
}
const res = deduplication(arr);
console.log(res);
</script>
有什么问题小伙伴们可以及时指出,谢谢 😋