JavaScript实现数组去重的十种方法分享

下面我将为您详细讲解“JavaScript实现数组去重的十种方法分享”的完整攻略,让您对此有更深入的了解。

简介

数组去重是前端开发中常见的任务,也是面试中经常会被问到的问题。本文将介绍JavaScript实现数组去重的十种方法。

1.使用for循环和indexOf方法

这是一种基础的去重方法,可以使用for循环遍历数组,再通过indexOf方法来判断是否重复。具体实现代码如下:

function unique1(arr){
    var res = [];
    for(var i=0;i<arr.length;i++){
        if(res.indexOf(arr[i])===-1){
            res.push(arr[i]);
        }
    }
    return res;
}

示例:

console.log(unique1([1,2,3,5,4,6,3,2,1,4])); // [1, 2, 3, 5, 4, 6]

2.使用for循环和双重for循环

这种方法可以使用两重for循环来进行比较,当遇到重复时跳过,否则将该元素添加到新数组中。具体实现代码如下:

function unique2(arr){
    var res = [];
    for(var i=0;i<arr.length;i++){
        for(var j=0;j<res.length;j++){
            if(arr[i]===res[j]){
                break;
            }
        }
        if(j===res.length){
            res.push(arr[i]);
        }
    }
    return res;
}

示例:

console.log(unique2([1,2,3,5,4,6,3,2,1,4])); // [1, 2, 3, 5, 4, 6]

3.使用for循环和对象

这种方法可以使用对象的属性来标记数组中的元素是否重复。具体实现代码如下:

function unique3(arr){
    var obj = {};
    var res = [];
    for(var i=0;i<arr.length;i++){
        if(!obj[arr[i]]){
            obj[arr[i]] = true;
            res.push(arr[i]);
        }
    }
    return res;
}

示例:

console.log(unique3([1,2,3,5,4,6,3,2,1,4])); // [1, 2, 3, 5, 4, 6]

4.使用sort方法

这种方法可以先将数组排序,然后遍历数组,如果当前元素与前一个元素不同,则将其添加到新数组中。具体实现代码如下:

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

示例:

console.log(unique4([1,2,3,5,4,6,3,2,1,4])); // [1, 2, 3, 4, 5, 6]

5.使用ES6的Set数据结构

这种方法可以使用ES6的Set数据结构来进行去重。Set是一种类似于数组的数据结构,它可以自动去重。具体实现代码如下:

function unique5(arr){
    return Array.from(new Set(arr));
}

示例:

console.log(unique5([1,2,3,5,4,6,3,2,1,4])); // [1, 2, 3, 5, 4, 6]

6.使用ES6的Map数据结构

这种方法可以使用ES6的Map数据结构来进行去重。Map是一种存储键值对的数据结构,它可以将数组中的每个元素作为键进行存储,重复的元素会被覆盖。具体实现代码如下:

function unique6(arr){
    var map = new Map();
    var res = [];
    for(var i=0;i<arr.length;i++){
        if(!map.has(arr[i])){
            map.set(arr[i],true);
            res.push(arr[i]);
        }
    }
    return res;
}

示例:

console.log(unique6([1,2,3,5,4,6,3,2,1,4])); // [1, 2, 3, 5, 4, 6]

7.使用filter方法

这种方法可以使用filter方法来进行去重。filter方法可以对数组中的每个元素进行过滤,并返回满足条件的元素组成的新数组。具体实现代码如下:

function unique7(arr){
    return arr.filter(function(item,index,array){
        return array.indexOf(item)===index;
    });
}

示例:

console.log(unique7([1,2,3,5,4,6,3,2,1,4])); // [1, 2, 3, 5, 4, 6]

8.使用reduce方法

这种方法可以使用reduce方法来进行去重,reduce方法可以对数组中的元素进行迭代,并将迭代结果作为下一次迭代的初始值。具体实现代码如下:

function unique8(arr){
    return arr.reduce(function(pre,cur){
        if(pre.indexOf(cur)===-1){
            pre.push(cur);
        }
        return pre;
    },[]);
}

示例:

console.log(unique8([1,2,3,5,4,6,3,2,1,4])); // [1, 2, 3, 5, 4, 6]

9.使用递归

这种方法可以使用递归来进行去重。递归方法会将数组不断拆分成小数组,然后递归比较小数组中的元素是否相同。具体实现代码如下:

function unique9(arr){
    var res = [];
    var arrLen = arr.length;
    var recursiveUnique = function(arr){
        var item = arr[0];
        if(res.indexOf(item)===-1){
            res.push(item);
        }
        if(arr.length>1){
            recursiveUnique(arr.slice(1));
        }
    };
    recursiveUnique(arr);
    return res;
}

示例:

console.log(unique9([1,2,3,5,4,6,3,2,1,4])); // [1, 2, 3, 5, 4, 6]

10.使用ES6的includes方法

这种方法可以使用ES6的includes方法来进行去重,includes方法可以判断数组中是否包含某个特定的元素。具体实现代码如下:

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

示例:

console.log(unique10([1,2,3,5,4,6,3,2,1,4])); // [1, 2, 3, 5, 4, 6]

总结

本文介绍了JavaScript实现数组去重的十种方法,每种方法都有各自的优缺点,可以根据实际情况选择合适的方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript实现数组去重的十种方法分享 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • AngularJS通过$location获取及改变当前页面的URL

    AngularJS是一个前端MVVM框架,通过它可以方便地进行网页开发。在网页开发中,经常需要获取或改变当前页面的URL,AngularJS提供了$location服务实现这一功能。下面是一份简要的攻略: 1. $location服务的概述 AngularJS中的$location服务用于获取和改变URL。通过$location服务,可以获取当前页面的URL…

    JavaScript 2023年6月11日
    00
  • JavaScript模拟实现键盘打字效果

    JavaScript模拟实现键盘打字效果可以通过多种方法实现,下面是一种简单易懂的方法。 思路 定义一个文本框,将需要打印的文字放到文本框中 定义一个计时器,每隔一定时间取出文本框中的一个字符并将字符添加到展示文本框内 当文本框内的所有字符都被打印后清除计时器,完成打字效果 代码实现 //HTML <div id="text"&gt…

    JavaScript 2023年5月28日
    00
  • JavaScript中循环遍历Array与Map的方法小结

    下面是详细讲解“JavaScript中循环遍历Array与Map的方法小结”的完整攻略。 一、循环遍历Array 1. for循环 使用for循环逐一遍历数组元素,并进行操作。示例如下: const arr = [‘a’, ‘b’, ‘c’, ‘d’]; for (let i = 0; i < arr.length; i++) { console.lo…

    JavaScript 2023年5月27日
    00
  • Ajax 数据请求的简单分析

    下面我将为你详细讲解“Ajax 数据请求的简单分析”的完整攻略。 什么是Ajax Ajax即Asynchronous JavaScript and XML。它是利用JS和XML进行异步通信技术的一种方法。 当我们在浏览器中访问网页时,通常情况下需要向服务器请求数据,服务器通过传统的方式返回数据并展示在浏览器上。而使用Ajax技术,可以在不重新加载整个网页的情…

    JavaScript 2023年6月11日
    00
  • js实现鼠标悬浮框效果

    JavaScript 实现鼠标悬浮框效果的过程主要分为以下几步: 1. 创建 HTML 结构 首先需要在 HTML 中定义框架,例如容器、容器内的内容、触发事件的 DOM 元素等。其中包含一个容器作为悬浮框,在鼠标触发事件后自动显示,同时鼠标移出事件后自动隐藏。 例如: <div class="parent"> <but…

    JavaScript 2023年6月11日
    00
  • JavaScript自定义DateDiff函数(兼容所有浏览器)

    下面是详细讲解“JavaScript自定义DateDiff函数(兼容所有浏览器)”的完整攻略。 标题 1. 问题描述 在JavaScript中计算两个日期之间的时间差并不是一个简单的操作。虽然JavaScript有自带的Date对象,可以计算日期之间的差值,但在不同的浏览器中,它的表现和运算方式是不一样的,这就会导致一些兼容性问题。因此,在实际开发中,我们经…

    JavaScript 2023年5月27日
    00
  • js特殊字符转义介绍

    JS特殊字符转义介绍 在JavaScript编程中,有一些字符是具有特殊含义的,如引号、斜线、换行符等。为了能够在代码中使用这些特殊字符,需要对它们进行转义。本篇攻略将介绍JS特殊字符转义的相关知识。 特殊字符转义表 在JavaScript中,特殊字符可以通过转义方法表示为普通字符,具体的转义方法如下表所示: 字符 转义字符 \ \ ‘ \’ ” \” \n…

    JavaScript 2023年5月28日
    00
  • jQuery实现右侧抽屉式在线客服功能

    下面是详细的“jQuery实现右侧抽屉式在线客服功能”的攻略。 准备工作 引入jQuery库 在HTML页面中需要引入jQuery库,以便进行jQuery代码的编写和执行。可以使用以下代码引入jQuery库: “`html “` HTML结构 在页面中需要添加相应的HTML结构。抽屉式在线客服一般包括两部分,一部分是客服窗口,另一部分是触发按钮。客服窗口…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部