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

yizhihongxing

下面我将为您详细讲解“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日

相关文章

  • 深入了解JavaScript中的Symbol的使用方法

    深入了解JavaScript中的Symbol的使用方法 Symbol是一种原始数据类型,它可以作为对象属性的唯一标识符。本攻略将引导您深入了解Javascript中Symbol的使用方法。 基本用法 创建Symbol对象可以使用Symbol()函数,该函数可以生成一个唯一的Symbol。 let mySymbol = Symbol(); console.lo…

    JavaScript 2023年6月10日
    00
  • 一些常用的JavaScript函数(json)附详细说明

    下面是关于“一些常用的JavaScript函数(json)附详细说明”的整个攻略: 一些常用的JavaScript函数(json)附详细说明 1. JSON.parse() JSON.parse() 方法可以将符合 JSON 格式的字符串转换为对应的 JavaScript 对象或数组。该方法常用于在客户端接收后台返回的 JSON 格式数据并在前端进行解析和处…

    JavaScript 2023年6月11日
    00
  • 防止重复发送 Ajax 请求

    防止重复发送 Ajax 请求是一个常见的开发任务,因为在页面交互过程中,用户可能会频繁地发起相同的请求,如果每次都向服务器发起请求,不仅会增加服务器的压力,也会降低用户体验。下面是防止重复发送 Ajax 请求的完整攻略: 1. 使用防抖技术 防抖技术是一种延迟执行函数的策略,即在指定时间内如果触发多次事件,只会执行一次。在 Ajax 请求中,我们可以使用防抖…

    JavaScript 2023年6月11日
    00
  • 实现非常简单的js双向数据绑定

    实现简单的双向数据绑定,主要需要掌握以下两个知识点: 如何监听输入框的变化事件并更新数据模型 如何监听数据模型的变化并更新对应的HTML元素 下面我们分别介绍这两个知识点的实现方法,以及两个示例说明。 监听输入框变化事件 在HTML中,输入框的值可以通过value属性获取到。我们可以使用EventTarget.addEventListener()方法来监听输…

    JavaScript 2023年6月10日
    00
  • Asp定时执行操作 Asp定时读取数据库(网页定时操作详解)

    Asp定时执行操作和定时读取数据库操作是网站后端开发中常见的需求,可以实现定时更新数据、定时给用户发送提醒等功能。下面是详细的攻略。 Asp定时执行操作 在Asp中,可以使用Javascript的setInterval来实现定时执行操作。以下是一个示例代码: <script language="javascript"> fun…

    JavaScript 2023年6月11日
    00
  • js实现日期级联效果

    当我们需要在日期选择器中实现级联效果时,需要知道选择器之间的依赖关系,例如年份选择器与月份选择器、月份选择器与日期选择器的关系。在JavaScript中,我们可以通过以下几个步骤来实现日期级联效果: 1. 获取DOM元素 首先需要获取到页面上对应的DOM元素,为每个日期选择器都添加一个id,例如: <select id="year"…

    JavaScript 2023年5月27日
    00
  • Eclipse配置Javascript开发环境图文教程

    针对你提出的问题,我会为你提供一份完整的Markdown文件,其中包含了标题、代码块和示例等元素。请仔细阅读,如果还有什么问题欢迎继续咨询。 Eclipse配置Javascript开发环境图文教程 介绍 Eclipse是一个非常流行的开发工具,可以用来开发多种编程语言。在这篇教程中,我们将会学到如何将Eclipse配置为Javascript开发环境。 步骤 …

    JavaScript 2023年5月27日
    00
  • json格式的Ajax提交示例代码

    当我们需要使用Ajax提交数据到后台服务器,通常我们会使用JSON格式来传输数据。以下是JSON格式的Ajax提交示例代码的完整攻略: 步骤1:引入jQuery库 首先,我们需要在HTML文件中引入jQuery库文件,代码如下: <script src="https://cdn.bootcss.com/jquery/3.5.1/jquery.…

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