JS实现数组去重方法总结(六种方法)

这里是JS实现数组去重方法总结(六种方法)的完整攻略。

一、方法一:利用ES6 Set特性去重

利用ES6新特性Set(集合)的特性,可以很方便地去重。

实现方法如下:

let arr = [1, 2, 3, 4, 1];
let newArr = [...new Set(arr)];
console.log(newArr); // [1, 2, 3, 4]

使用Set的优点是代码简洁,不需要自己写去重方法,但是会改变原数组顺序。

二、方法二:利用ES6 Map特性去重

利用ES6新特性Map的特性,可以很方便地去重。

实现方法如下:

let arr = [1, 2, 3, 4, 1];

function unique(arr) {
  const map = new Map();
  return arr.filter(item => !map.has(item) && map.set(item, 1));
}
console.log(unique(arr)); // [1, 2, 3, 4]

使用Map的优点是可以保持原数组的顺序。

三、方法三:使用for循环去重

利用for循环逐一遍历数组,将不重复的元素放入新数组中。

实现方法如下:

let arr = [1, 2, 3, 4, 1];
let newArr = [];

for (let i = 0; i < arr.length; i++) {
  if (newArr.indexOf(arr[i]) === -1) {
    newArr.push(arr[i]);
  }
}

console.log(newArr); // [1, 2, 3, 4]

此方法是常规的去重方法,使用for循环对数组逐个遍历,不建议用于大型数组去重,因为这样操作效率相对较低。

四、方法四:使用reduce去重

将数组中的每个元素逐个遍历,判断该元素是否在新数组中存在。若不存在,则在新数组中添加该元素。

实现方法如下:

let arr = [1, 2, 3, 4, 1];
let newArr = arr.reduce((prev, cur) => prev.includes(cur) ? prev : [...prev, cur], []);
console.log(newArr); // [1, 2, 3, 4]

使用reduce可以充分利用数组本身的方法进行去重操作,代码简洁便于管理,适用于大型数组。

五、方法五:利用filter方法和indexOf方法去重

使用filter方法对每个元素进行遍历,返回新数组中不存在的元素。

实现方法如下:

let arr = [1, 2, 3, 4, 1];
let newArr = arr.filter((item, index) => arr.indexOf(item) === index);
console.log(newArr); // [1, 2, 3, 4]

使用filter方法和indexOf方法的优点是代码简洁,但是对于大型数组操作效率相对较低。

六、方法六:利用对象属性去重

使用对象属性的方式可以将数组中的元素作为对象的属性,去重后返回对象的键名所组成的新数组。

实现方法如下:

let arr = [1, 2, 3, 4, 1];
let obj = {};
let newArr = [];
for (let i = 0; i < arr.length; i++) {
  if (!obj[arr[i]]) {
    newArr.push(arr[i]);
    obj[arr[i]] = 1;
  }
}
console.log(newArr); // [1, 2, 3, 4]

使用对象属性的优点是操作效率高,但是返回的是新数组而非原数组。

以上六种方法各有特点,根据实际应用场景选择适合的方法可以大幅提高代码效率和可读性。

示例:

// 对数组去重操作并输出去重后的值
let arr = [1, 3, 2, 1, 2, 3];
let newArr = [];
for (let i = 0; i < arr.length; i++) {
  if (newArr.indexOf(arr[i]) === -1) {
    newArr.push(arr[i]);
  }
}
console.log(newArr); // [1, 3, 2]

另一个示例:

// 操作方法:使用对象属性去重
let arr = [1, 3, 2, 1, 2, 3];
let obj = {};
let newArr = [];
for (let i = 0; i < arr.length; i++) {
  if (!obj[arr[i]]) {
    newArr.push(arr[i]);
    obj[arr[i]] = 1;
  }
}
console.log(newArr); // [1, 3, 2]

以上示例中,第一个示例使用for循环遍历并去重数组,第二个示例使用对象属性去重。两个示例分别说明了使用两种不同的方法实现对数组去重,但都能较好地达到去重目的。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS实现数组去重方法总结(六种方法) - Python技术站

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

相关文章

  • JS中的回调函数(callback)讲解

    以下是“JS中的回调函数(callback)讲解”的攻略。 什么是回调函数 回调函数是在另一个函数执行完毕后执行的函数。在JavaScript中,函数是一等公民,可以将函数作为参数传递给另一个函数,也可以在一个函数中返回另一个函数。这就是回调函数的由来。回调函数通常用于异步操作,比如网络请求、定时器和事件监听等功能。 回调函数的用法 将函数作为参数传递给另一…

    JavaScript 2023年6月10日
    00
  • js实现类似jquery里animate动画效果的方法

    实现类似jQuery里的animate动画效果的方法,可以通过纯JavaScript使用定时器setInterval()来实现。 1. 编写animate函数 在JavaScript中,编写一个animate函数,接收四个参数:元素对象、目标属性、动画时长和回调函数。动画时长使用毫秒作为单位,回调函数在动画完成时执行。 /** * 实现 animate 动画…

    JavaScript 2023年6月10日
    00
  • javascript正则表达式分析第1/2页

    “javascript正则表达式分析第1/2页”的完整攻略可以分为以下几步: 学习正则表达式的基本概念和语法。 正则表达式是用来匹配和处理字符串的一种工具,通过特定的符号和规则对字符串进行筛选和操作。 在Javascript中,正则表达式用斜杠(/)括起来,例如:/pattern/。 正则表达式支持特殊字符、元字符和限定符等语法,例如:^表示匹配字符串开头,…

    JavaScript 2023年6月10日
    00
  • Javascript & DHTML DOM基础和基本API第5/5页

    《Javascript & DHTML DOM基础和基本API》是一本介绍JavaScript和DHTML的书籍,其中包含了JavaScript和DHTML DOM的基础和API,本攻略将对第5/5页进行详细解读。 1. 什么是DOM? DOM(Document Object Model)是HTML和XML文档的编程接口,它将整个页面抽象成一个树状结…

    JavaScript 2023年6月10日
    00
  • pnpm 之降本增效

    作者:京东科技 于振京 受众简介 前端研发工程师 还在为npm i安装大量依赖等待时间较长,npm扁平化node_modules依赖版本冲突在苦恼吗,不用苦恼pnpm为你保驾护航 主要影响:安装依赖包的过程,假如使用的是npm install会根据package-lock.json进行软件包的安装,如果没有package-lock.json会根据packag…

    JavaScript 2023年4月17日
    00
  • Javascript Date getDate() 方法

    以下是关于JavaScript Date对象的getDate()方法的完整攻略,包括两个示例说明。 JavaScript Date对象的getDate()方法 JavaScript Date对象的getDate()方法返回一个月中的某一天(1-31)。该方法可用于获取当前日期的天数。 下是使用Date对象的getDate()方法的示例: var date =…

    JavaScript 2023年5月11日
    00
  • vue3中路由传参query、params及动态路由传参详解

    针对vue3中的路由传参query、params及动态路由传参,我来为大家做一份详细的攻略。 一、前置知识 Vue-router Vue提供了一款官方的路由插件Vue-router,可以方便的实现SPA应用的路由管理。若未安装Vue-router,可以通过以下命令进行安装: npm install vue-router 动态路由 动态路由是 vue-rout…

    JavaScript 2023年6月11日
    00
  • JavaScript实现简易的水印覆盖功能

    实现水印覆盖功能需要使用 JavaScript。下面是实现此功能的完整攻略: 步骤一:创建水印图片 首先需要创建一张水印图片,可以使用 Photoshop 等工具进行制作。水印图片需要保存为 PNG 格式,并且要使用透明背景。在水印图片中可以添加公司名称、版权信息等信息。 步骤二:将水印图片嵌入网页 将水印图片导入网页。可以使用以下代码: <img s…

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