JS数组去重的6种方法完整实例

JS数组去重的6种方法完整实例

为什么要去重

在实际的开发过程中,有时候我们需要对一个数组进行操作,但是这个数组中可能存在重复的元素。这时候就需要对数组进行去重操作,以便得到我们需要的元素或数据。

去重方法

方法一:使用set去重

使用ES6中的Set数据结构可以非常方便地对一个数组进行去重操作。

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

方法二:使用filter去重

通过Array.prototype.filter()函数去重,通过筛选数组中的元素,只保留第一次出现的元素,达到去重效果。

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

方法三:使用reduce去重

使用reduce函数遍历数组,将数组元素作为key,存放在一个对象里面,最后返回这个对象的所有属性值组成的数组,达到去重效果。

const arr = [1, 2, 2, 3, 4, 4, 5];
const newArr = arr.reduce((prev, curr) => {
  if (!prev.includes(curr)) {
    prev.push(curr);
  }
  return prev;
}, []);
console.log(newArr); // [1, 2, 3, 4, 5]

方法四:使用Map去重

使用Map数据结构可以存储键值对,其中键为数组元素的值,值为该元素出现的次数。最后遍历Map,只取出值为1的元素,达到去重效果。

const arr = [1, 2, 2, 3, 4, 4, 5];
const map = new Map();
arr.forEach(item => {
  if (!map.has(item)) {
    map.set(item, 1);
  } else {
    map.set(item, map.get(item) + 1);
  }
});
const newArr = [];
for (let [key, value] of map) {
  if (value === 1) {
    newArr.push(key);
  }
}
console.log(newArr); // [1, 2, 3, 4, 5]

方法五:使用递归去重

通过递归的方式去重,将数组的第一个元素与后面的元素逐一比较,如果发现重复元素就去掉后面的元素,继续递归,直到剩下最后一个元素进行比较并返回结果。

const arr = [1, 2, 2, 3, 4, 4, 5];
function unique(arr) {
  if (arr.length === 1) {
    return arr;
  }
  const first = arr.shift();
  return unique(arr.filter(item => item !== first)).unshift(first) && arr;
}
console.log(unique(arr)); // [1, 2, 3, 4, 5]

方法六:使用indexOf去重

使用indexOf进行去重,通过判断元素在数组中第一次和最后一次出现的位置,来对数组进行去重。

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

总结

以上就是6种JS数组去重的方法,使用不同的方法可以达到同样的效果。在实际开发使用的时候,可以根据数据的特性来选择不同的方法。如果是ES6环境,建议使用方法一,它既简单又不容易出错。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS数组去重的6种方法完整实例 - Python技术站

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

相关文章

  • jQuery倒计时代码(超简单)

    下面是对“jQuery倒计时代码(超简单)”的详细讲解攻略: 1.倒计时实现原理 倒计时的核心是通过 JavaScript 操作 DOM 元素,将倒计时的数字显示在页面上,并且在每一秒中更新显示的数字,从而实现倒计时的效果。jQuery 提供了方便操作 DOM 元素的接口,使得倒计时的实现变得非常简单。 2.实现步骤 第一步,引入 jQuery 库文件。可以…

    jquery 2023年5月28日
    00
  • jQWidgets jqxScrollView主题属性

    以下是关于 jQWidgets jqxScrollView 组件中主题属性的详细攻略。 jQWidgets jqxScrollView 主题属性 jQWidgets jqxScrollView 组件的主题属性用于设置滚动视图的外观样式。 语法 // 获取主题属性值 theme = $(‘#scrollView’).jqxScrollView(‘theme’)…

    jquery 2023年5月12日
    00
  • jQWidgets jqxToolBar disabled属性

    以下是关于 jQWidgets jqxToolBar 组件中 disabled 属性的详细攻略。 jQWidgets jqxToolBar disabled 属性 jQWidgets jqxToolBar 组件的 disabled 属性用于禁用或启用工具栏及其工具。该属性可以设置为 true 或 false。 语法 // 禁用工具栏及其工具 $(‘#tool…

    jquery 2023年5月11日
    00
  • 基于jQuery实现的查看全文功能【实用】

    下面是“基于jQuery实现的查看全文功能【实用】”的完整攻略,并且包含两个示例: 1. 什么是查看全文功能? 在网页设计中,常常会遇到需要将一些文字内容折叠起来,只显示摘要部分,让用户点击“更多”按钮或者其他交互元素才会展开完整内容。这种交互称为“查看全文”(Read More)功能。 2. 如何实现? 2.1 HTML结构 首先,我们需要在HTML中定义…

    jquery 2023年5月28日
    00
  • jQWidgets jqxTreeGrid cellValueChanged事件

    jQWidgets jqxTreeGrid cellValueChanged 事件 jqxTreeGrid 是 jQWidgets 提供的一个树形表格组件,它可以展示层级结构的支持多种交互。jqxTreeGrid 提供了 cellValueChanged 事件,用于在单元格的值发生改变时触发。 cellValueChanged 事件 cellValueCha…

    jquery 2023年5月11日
    00
  • jQWidgets jqxScrollView back()方法

    以下是关于 jQWidgets jqxScrollView 组件中 back() 方法的详细攻略。 jQWidgets jqxScrollView back() 方法 jQWidgets jqxScrollView 组件的 back() 方法用于将滚动视图向后动一个项目。 语法 $(‘#scrollView’).jqxScrollView(‘back’); …

    jquery 2023年5月12日
    00
  • jQWidgets jqxGrid getrowboundindexbyid()方法

    以下是关于“jQWidgets jqxGrid getrowboundindexbyid()方法”的完整攻略,包含两个示例说明: 方法简介 jqxGrid 控件 getrowboundindexbyid() 方法用于获取指定行 ID 的绑定索引。该方法的语法如下: $("#jqxGrid").jqxGrid(‘getrowboundind…

    jquery 2023年5月10日
    00
  • DataTables scrollX选项

    以下是关于DataTables scrollX选项的完整攻略: scrollX选项是什么? scrollX选项是DataTables中的选项,用于设置表格是否允许水平滚动。使用scrollX选项,可以设置表格是否允许水平滚动。 如何使用scrollX选项? 可以使用以下代码设置scrollX选项: $(‘#example’).DataTable( { &qu…

    jquery 2023年5月12日
    00
合作推广
合作推广
分享本页
返回顶部