分享经典面试题:JS数组去重的多种方法

简介: 分享经典面试题:JS数组去重的多种方法

与大家分享我在工作中用到的三种数组去重的方法,亲测有效~

1.利用es6的新特性new set

var arr1 = [1,2,3,2,4,1];
function unique(arr){
  return [...new Set(arr)]
}
console.log(  unique(arr1) );
//返回 [1,2,3,4]

注意:Set首字母需要大写,也可以用Array.from(new Set(arr))

这种方法简单好用,不过有个缺点:new Set去重是去同样类型的重,如果有数字类型1和字符串类型1是不可以的

2.数组遍历+indexof()方法

var arr2 = [1,2,3,2,4,1];
function unique( arr ){
  var brr = [];
  for( var i=0;i<arr.length;i++){
    if(  brr.indexOf(arr[i]) == -1 ){
      brr.push( arr[i] );
    }
  }
  return brr;
}
console.log( unique(arr2) );
//返回[1,2,3,4]

3.数组的sort方法+循环遍历,判断相邻的两个元素是否相等

var arr3 = [1,2,3,2,4,1];
function unique( arr ){
  arr = arr.sort();
  var brr = [];
  for(var i=0;i<arr.length;i++){
    if( arr[i] !== arr[i-1]){
      brr.push( arr[i] );
    }
  }
  return brr;
}
console.log( unique(arr3) );
//返回[1,2,3,4]

以上方法各有利弊,小伙伴们如果还有其他更合适的方法,欢迎留言探讨~

相关文章
|
3天前
|
JavaScript 前端开发
在 JavaScript 中,实现继承的方法有多种
【6月更文挑战第15天】JavaScript 继承常见方法包括:1) 原型链继承,利用原型查找,实例共享原型属性;2) 借用构造函数,避免共享,但方法不在原型上复用;3) 组合继承,结合两者优点,常用但有额外开销;4) ES6 的 class,语法糖,仍基于原型链,提供直观的面向对象编程。
15 7
|
4天前
|
缓存 JavaScript 前端开发
js/javascript获取时间戳的5种方法
js/javascript获取时间戳的5种方法
|
4天前
|
JavaScript 前端开发 索引
深入了解JavaScript中的indexOf()方法:实现数组元素的搜索和索引获取
深入了解JavaScript中的indexOf()方法:实现数组元素的搜索和索引获取
|
4天前
|
JavaScript 前端开发
JS遍历数组和对象的方法有哪些
JS遍历数组和对象的方法有哪些
|
6天前
|
JavaScript 前端开发
深入解析JavaScript中的面向对象编程,包括对象的基本概念、创建对象的方法、继承机制以及面向对象编程的优势
【6月更文挑战第12天】本文探讨JavaScript中的面向对象编程,解释了对象的基本概念,如属性和方法,以及基于原型的结构。介绍了创建对象的四种方法:字面量、构造函数、Object.create()和ES6的class关键字。还阐述了继承机制,包括原型链和ES6的class继承,并强调了面向对象编程的代码复用和模块化优势。
18 0
|
8天前
|
SQL 算法 大数据
深入解析力扣181题:超过经理收入的员工(自连接方法详解及模拟面试问答)
深入解析力扣181题:超过经理收入的员工(自连接方法详解及模拟面试问答)
|
8天前
|
算法 数据挖掘 大数据
深入解析力扣172题:阶乘后的零(计算因子5的方法详解及模拟面试问答)
深入解析力扣172题:阶乘后的零(计算因子5的方法详解及模拟面试问答)
|
12天前
|
JavaScript 前端开发
JavaScript删除数组中指定元素3种方法例子
JavaScript删除数组中指定元素3种方法例子
|
19天前
|
JavaScript 前端开发
js中改变this指向、动态指定函数 this 值的方法
js中改变this指向、动态指定函数 this 值的方法
|
19天前
|
JavaScript 前端开发 开发者
JavaScript 中程序异常处理的方法,提升代码运行的健壮性
JavaScript 中程序异常处理的方法,提升代码运行的健壮性