数组去重的十种方法

数组的去重方法,其实无论实在实际项目还是在面试中都会有用到的,下面我们来列举一下常见的几个:

  1. 使用 for 循环和 includes
  2. 使用 Set 和 Array.from()
  3. 使用 for 循环和 indexOf
  4. for 循环嵌套 for 循环,结合 splice
  5. 使用 sort 和 reduce 方法
  6. 使用 filter 和 indexOf
  7. 使用 forEach 循环和 Map
  8. 使用 reduce 和 includes
  9. 使用扩展运算符和 set
  10. 如果是数组对象的数据格式,可以使用 forEach 和 includes 的方法
1. 使用 for 循环和 includes
function unique(arr) {
	let newArr = []
  for (let i=0; i < arr.length;i++) {
  	if (!newArr.includes(arr[i])) {
    	newArr.push(arr[i])
    }
  }
  return newArr;
}
2. 使用 Set 和 Array.from()
function unique(arr) {
	return Array.from(new Set(arr))
}
3. 使用 for 循环和 indexOf
function unique(arr) {
	let newArr = []
  for (let i=0; i < arr.length; i++) {
  	if (newArr.indexOf(arr[i]) === -1) {
    	newArr.push(arr[i])
    }
  }
  return newArr;
}
4. for 循环嵌套 for 循环,结合 splice
function unique(arr) {
	for (let i=0; i < arr.length; i++) {
  	for (let j=i+1; j < arr.length; j++) {
    	if (arr[i] == arr[j]) {
      	arr.splice(j, 1);
        j--;
      }
    }
  }
  return arr;
}
5. 使用 sort 和 reduce 方法
function unique(arr) {
  let newArr = [arr[0]];
	arr.sort().reduce((prev, next) => {
  	if (prev !== next) {
    	newArr.push(next)
    }
    return next;
  })
  return newArr;
}
6.使用 filter 和 indexOf
function unique(arr) {
	return arr.filter((item, index, arr) => {
  	return arr.indexOf(item, 0) === index
  })
}
7.使用 forEach 循环和 Map
function unique(arr) {
	let map = new Map();
  let array = [];
  arr.forEach(item => {
  	if (!map.has(item)) {
    	map.set(item, true);
      array.push(item)
    }
  })
  return array;
}
8.使用 reduce 和 includes
function unique(arr) {
	return arr.reduce((newArr, next) => {
  	if (!newArr.includes(next)) {
    	newArr.push(next)
    }
    return newArr;
  }, [])
}
9.使用扩展运算符和 set
function unique(arr) {
	return [...new Set(arr)]
}
10.如果是数组对象的数据格式,可以使用 forEach 和 includes 的方法
function uniqueArrayObj(arr, key) {
	let newArr = [arr[0]]
  arr.forEach(item => {
  	newArr.filter(newitem => {
    	if (item[key] !== newitem[key]) {
      	newArr.push(item)
      }
    })
  })
  return newArr;
}

当然,还有一些其他方法,但是这里就不多做赘述了。其实这些方法总结一下,它们的去重思想都大同小异,比如说:
1、3、5、6、7、8、10 的解题思路都是新生成一个数组,然后判断新数组是否包含当前值,若没有包含,则把这个值 push 进去,反之则不用 push,最后把新数组返回去。那按照这个思路,我们可以调用的 API 方法就有很多了(如上)。
那剩下的 2、4、9 这三个相对来说是借助了 ES6 里的一些新特性来做的,更加的方便快捷。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sure! 下面是常见的6种JavaScript数组去重方法: 1. 使用Set数据结构:Set是ES6引入的一种新的数据结构,它可以自动去除重复的值。 ```javascript const array = [1, 2, 3, 3, 4, 5, 5]; const uniqueArray = [...new Set(array)]; console.log(uniqueArray); ``` 2. 使用filter方法:使用filter方法遍历数组,然后通过indexOf判断当前元素在数组中的索引和当前索引是否相等,如果相等则保留,否则去除。 ```javascript const array = [1, 2, 3, 3, 4, 5, 5]; const uniqueArray = array.filter((value, index, self) => { return self.indexOf(value) === index; }); console.log(uniqueArray); ``` 3. 使用reduce方法:使用reduce方法遍历数组,将每个元素放入一个新数组中,同时使用includes方法判断新数组中是否已存在该元素。 ```javascript const array = [1, 2, 3, 3, 4, 5, 5]; const uniqueArray = array.reduce((acc, currentValue) => { if (!acc.includes(currentValue)) { acc.push(currentValue); } return acc; }, []); console.log(uniqueArray); ``` 4. 使用Map数据结构:使用Map数据结构可以根据键的唯一性去除重复值。 ```javascript const array = [1, 2, 3, 3, 4, 5, 5]; const uniqueArray = Array.from(new Map(array.map(value => [value, value])).values()); console.log(uniqueArray); ``` 5. 使用递归:使用递归来遍历数组,然后判断当前元素是否在之前的元素中出现过。 ```javascript const array = [1, 2, 3, 3, 4, 5, 5]; function unique(array) { if (array.length === 1) { return array; } if (array.slice(1).includes(array

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值