JavaScript数组去重方法

基本方法

-思路:创建一个新数组,遍历原数组,喏遍历的元素在新数组不存在就添加到数组中,反之则忽略

function unArray(arr){
    var res  = [];
    for(var i = 0; i< arr.length ; i++ ){
        var repeat = false;
        for(var k = 0 ; k  < res.length; k++ ){
            if(arr[i]  === res[j] ){
              repeat = true;
              break;
          }
      }
          if(!repeat){
              res.push(arr[i]);
          }
  }
  return res
}

先排序再去重

-思路:先对数组排序,再定义一个新的数组,变量排序后的数组,喏排序后的数组元素不等于新数组的最后一个元素,则添加。

        function unArray(arr) {
            function sortNumber(a,b) {
                return a-b;
            }
            var newArr = arr.sort(sortNumber);
            var res = [];
            for (var i = 0 ; i < newArr.length ; i++){
                if (newArr[i] !== res[res.length-1 ]){
                    res.push(newArr[i]);
                }
            }
            return res;
        }

对象去重

-思路:利用对象的属性,遍历数组,喏数组元素不是对象的属性,则添加

        function unArray(arr) {
            var res = [];
            var temp = {};
            for (var i = 0 ; i < arr.length; i++){
                if (!temp[arr[i]]){
                    res.push(arr[i]);
                    temp[arr[i]] = 1;
                }
            }
            return res;
        }

filter or indexOf 方法

-思路:通过filter筛选出去重后的数组,喏indexOf方法在该元素之后再查不到该元素的位置,表示该元素不存在,符合要求。

       function unArray(arr) {
            return arr.filter(function (item,index,array) { 
                return array.indexOf(item, index+1) === -1;
            })
        }

ES6 Set

-思路:利用ES6中的Set不包含重复元素的思想,为数组创建Set对象,再将对象转换为数组

 function unArray(arr) {
            return Array.from(new Set(arr))
        }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、基础知识:1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机...
    杀小贼阅读 2,416评论 0 4
  • 前言 最近学习着,突然发现自己心中总有些惶恐,因为发现自己写过的一些东西好像忘记了,又好像是以前就没有弄彻底,所以...
    lane_developer阅读 419评论 0 2
  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 5,162评论 0 21
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,373评论 11 349
  • 我小时候,爸爸是开拖拉机的,是那种手摇的,我七岁坐在副驾驶,跟着爸爸拉豆渣,到处溜达,八九岁能自己站着开。我爸觉得...
    玳瑁的茂阅读 215评论 0 0