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日

相关文章

  • javascript表单事件处理方法详解

    JavaScript表单事件处理方法详解 什么是表单事件 表单事件是指当用户与表单元素交互时,浏览器会触发一些事件以响应用户的行为。表单事件可以是用户输入、用户点击、用户提交表单等等。 常见的表单事件 以下是一些常见的表单事件: focus:当元素获得焦点时 blur:当元素失去焦点时 change:当元素值发生改变时 keydown、keyup:按下或松开…

    JavaScript 2023年6月10日
    00
  • JavaScript实现弹出广告功能

    要实现JavaScript弹出广告功能,首先需要了解以下几个知识点: 1.如何触发弹窗 2.如何获取屏幕宽度和高度 3.如何定时关闭弹窗 4.如何在页面中添加HTML元素 下面,我将详细介绍如何实现JavaScript弹出广告功能。 1. 触发弹窗 触发弹窗的方式有多种,最基本的方式是通过点击按钮或者链接触发。比如,在页面中添加一个按钮,点击按钮时弹出广告。…

    JavaScript 2023年6月11日
    00
  • JS判断对象是否为空对象的几种实用方法汇总

    下面是详细讲解“JS判断对象是否为空对象的几种实用方法汇总”的攻略。 标题 JS判断对象是否为空对象的几种实用方法汇总 简介 我们在开发中经常会遇到判断一个对象是否为空的情况。如果使用传统的判断方法,比如if 语句、length属性等,会增加代码的复杂性和可读性。本文将介绍几种实用的判断对象是否为空的方法。 正文 方法一:使用for…in循环判断 可以使…

    JavaScript 2023年5月27日
    00
  • ES6模板字符串和标签模板的应用实例分析

    下面是关于 “ES6模板字符串和标签模板的应用实例分析” 的完整攻略。 ES6模板字符串 ES6模板字符串是一种新的字符串类型,用反引号 (`) 包裹字符串,可以使用 ${} 语法插入变量和表达式。它们也可以跨越多行而不需要添加额外的转义字符。 下面是一个示例,使用ES6模板字符串构建HTML模板: const name = ‘John’; const ag…

    JavaScript 2023年5月28日
    00
  • javascript 玩转Date对象(实例讲解)

    Javascript 玩转 Date 对象(实例讲解) 日期和时间在 Javascript 中有着非常重要的地位,而 Date 对象则是用于处理日期和时间的核心对象。在本攻略中,我们将介绍 Date 对象的常用的方法和属性,并提供一些在实际项目中可能会用到的示例供参考。 初始化 Date 对象 在创建 Date 对象时,可以使用以下语句: var date …

    JavaScript 2023年6月10日
    00
  • JavaScript闭包closure详述

    JavaScript闭包(closure)详述 什么是闭包? 闭包(closure)是一个常见的概念,但其含义和使用却让很多JavaScript初学者感到困惑。闭包是指有权访问另一个函数作用域中变量的函数。简单来说,闭包是一个内部函数,它可以访问外部函数中声明的变量和参数,即使外部函数已经返回了。 闭包的实际应用 闭包最常见的应用之一是为回调和事件处理程序创…

    JavaScript 2023年6月10日
    00
  • 深入理解JavaScript中的尾调用(Tail Call)

    深入理解JavaScript中的尾调用(Tail Call) 在JavaScript中,尾调用(Tail Call)是一个非常重要的概念。它解决了递归调用过多时可能发生的堆栈溢出问题,同时还可以提高代码的性能。本文将详细介绍什么是尾调用,以及如何正确地使用它。 尾调用的定义 尾调用是指函数最后执行的操作是一个返回语句,这个返回值可以直接返回给函数调用者。这个…

    JavaScript 2023年6月10日
    00
  • JavaScript 实现HTML DOM增删改查操作的常见方法详解

    JavaScript 实现HTML DOM增删改查操作的常见方法详解 1. DOM简介 DOM全称“Document Object Model”,中文翻译为文档对象模型,是一种对文档结构化的方式表达,即将文档中的每一个元素都抽象成为一个对象,便于JavaScript等脚本语言进行操作。 DOM是Web页面的编程接口,可以使用JavaScript、VBScri…

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