1.set()方法(ES6)

  1. var arr= [1,2,3,2,5,65,5,10];
  2. function unique (arr) {
  3. return Array.from(new Set(arr))
  4. }
  5. var arr= [1,2,3,2,5,65,5,10];
  6. console.log(unique(arr)); //[1, 2, 3, 5, 65, 10]

Set对象是值的集合,你可以按照插入的顺序迭代它的元素。 Set中的元素只会出现一次,即 Set 中的元素是唯一的。返回一个新的迭代器对象。
Array.from() 方法从一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。
注意:这种方法还无法去掉“{}”空对象

2.indexOf(原生js)

  1. //新建一个空的结果数组,for 循环原数组,判断结果数组是否存在当前元素,
  2. 如果有相同的值则跳过,不相同则push进数组。
  3. var arr= [1,2,3,2,5,65,5,10];
  4. function unique(arr){
  5. if(!Array.isArray(arr)){
  6. return
  7. }
  8. let list =[];
  9. for(let i= 0;i<arr.length;i++){
  10. if(list.indexOf(arr[i])===-1){
  11. list.push(arr[i])
  12. }
  13. }
  14. return list;
  15. }
  16. console.log(unique(arr)) //[1, 2, 3, 5, 65, 10]

**Array.isArray()** 用于确定传递的值是否是一个 Array
indexOf这个方法找到指定元素在数组里第一次出现的位置,返回指定元素的索引值;如果没有找到,就返回-1。
push这个方法可以向数组的末尾添加一个或多个元素,并返回新的长度。需要注意的是,该方法也会改变数组的长度。

3.利用filter

  1. var arr= [1,2,3,2,5,65,5,10];
  2. function unique(arr) {
  3. return arr.filter(function(item, index, arr) {
  4. //当前元素,在原始数组中的第一个索引==当前索引值,否则返回当前元素
  5. return arr.indexOf(item, 0) === index;
  6. });
  7. }
  8. console.log(unique(arr)) //[1, 2, 3, 5, 65, 10]

4.利用includes

  1. var arr= [1,2,3,2,5,65,5,10];
  2. function unique(arr) {
  3. if (!Array.isArray(arr)) {
  4. console.log('type error!')
  5. return
  6. }
  7. var array =[];
  8. for(var i = 0; i < arr.length; i++) {
  9. if( !array.includes( arr[i]) ) {//includes 检测数组是否有某个值
  10. array.push(arr[i]);
  11. }
  12. }
  13. return array
  14. }
  15. console.log(unique(arr)) //[1, 2, 3, 5, 65, 10]

5.利用sort()

  1. var arr= [1,2,3,2,5,65,5,10];
  2. function unique(arr) {
  3. if (!Array.isArray(arr)) {
  4. console.log('type error!')
  5. return;
  6. }
  7. arr = arr.sort()
  8. var arrry= [arr[0]];
  9. for (var i = 1; i < arr.length; i++) {
  10. if (arr[i] !== arr[i-1]) {
  11. arrry.push(arr[i]);
  12. }
  13. }
  14. return arrry;
  15. }
  16. console.log(unique(arr)) //[1, 2, 3, 5, 65, 10]

利用sort()排序方法,然后根据排序后的结果进行遍历及相邻元素比对。