[记录]es6常用去重方法(数组、字符串)

article/2025/10/14 21:13:49

数组去重

ES6

ES6以下方法除了代码简洁外,对于undefined和NaN也同样可以达到去重的效果

new Set()是ES6新增的数据结构,类似于数组,但它的一大特性就是所有元素都是唯一的,没有重复的值,我们一般称为集合,Set本身是一个构造函数,用来生成 Set 数据结构。

  • Set搭配扩展运算符 …

    let arr = [2, '50', undefined, 50, 8, 'aa', 90, 6, 5, 6, 6, 88, 88, 'b', 'aa', undefined, NaN, NaN, 7]
    let newArr = [...new Set(arr)];
    console.log(newArr)
  • Set对象和数组的Array.from

Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括 ES6 新增的数据结构 Set 和 Map)。

IE不支持此方法

let arr = [2, '50', undefined, 50, 8, 'aa', 90, 6, 5, 6, 6, 88, 88, 'b', 'aa', undefined, NaN, NaN, 7]
let distinct = arrData => {return Array.from(new Set(arrData))
}
let newArr = distinct(arr)
console.log(newArr)

  • reduce() 搭配includes()

定义和用法

reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。

reduce() 可以作为一个高阶函数,用于函数的 compose。

reduceRight() 方法的功能和 reduce() 功能是一样的,不同的是 reduceRight() 从数组的末尾向前将数组中的数组项做累加。

注意: reduce() 对于空数组是不会执行回调函数的。

includes() 方法用于判断字符串是否包含指定的子字符串。

如果找到匹配的字符串则返回 true,否则返回 false。

注意: includes() 方法区分大小写。

reduce()

 includes()

let arr = [2, '50', undefined, 50, 8, 'aa', 90, 6, 5, 6, 6, 88, 88, 'b', 'aa', undefined, NaN, NaN, 7]
let newArr = arr.reduce((total, current) => {return total.includes(current) ? total : total.concat(current);
}, []);
console.log(newArr)

  • Map对象和数组的filter方法

Map对象是ES6提供的一个新的数据结构,其中has的办法是返回一个布尔值,表示某个值是否存在当前的Map对象之中,set的办法是给Map对象设置key/value。

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

let arr = [2, '50', undefined, 50, 8, 'aa', 90, 6, 5, 6, 6, 88, 88, 'b', 'aa', undefined, NaN, NaN, 7]
let distinct = arrData => {const res = new Map();return arrData.filter((a) => !res.has(a) && res.set(a, 1))
}
let newArr = distinct(arr)
console.log(newArr)

ES5

  • indexOf()去重

定义和用

indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。

如果没有找到匹配的字符串则返回 -1。

function distinct(arrData) {var Array = []for (var i = 0; i < arrData.length; i++) {if (Array.indexOf(arrData[i]) === -1) Array.push(arrData[i])}return Array
}
var arr = [8, 45, 55, 9, 8, 10, 12, 100, 12, 55, 45]
console.log(distinct(arr, '<=arr'))var arr2 = [8, 'aa', 55, 9, 8, 'aa', 12, 'b', 12, 55, 45]
console.log(distinct(arr2, '<=arr2'))

  • sort去重

定义和用法

sort() 方法对数组的项目进行排序。

排序顺序可以是按字母或数字,也可以是升序(向上)或降序(向下)。

默认情况下,sort() 方法将按字母和升序将值作为字符串进行排序。

这适用于字符串("Apple" 出现在 "Banana" 之前)。但是,如果数字按字符串排序,则 "25" 大于 "100" ,因为 "2" 大于 "1"。

function distinct(arrData) {// 利用sort排序功能,相同的数据总会在左右arrData.sort() // sort() 方法会改变原始数组var Array = [arrData[0]];for (var i = 1; i < arrData.length; i++) {if (arrData[i] !== arrData[i - 1]) Array.push(arrData[i]);}return Array;
}
var arr = [8, 45, 55, 9, 8, 10, 12, 100, 12, 55, 45]
console.log(distinct(arr, '<=arr'))var arr2 = [8, 'aa', 55, 9, 8, 'aa', 12, 'b', 12, 55, 45]
console.log(distinct(arr2, '<=arr2'))

  • splice去重

定义和用法

splice() 方法用于添加或删除数组中的元素。

注意:这种方法会改变原始数组。

function distinct(arrData) {for (var i = 0; i < arrData.length; i++) {for (var j = i + 1; j < arrData.length; j++) {//如果当前等同于下一个,splice方法删除下一个if (arrData[i] == arrData[j]) {arrData.splice(j, 1);j--;}}}return arrData;
}
var arr = [8, 45, 55, 9, 8, 10, 12, 100, 12, 55, 45]
console.log(distinct(arr, '<=arr'))var arr2 = [8, 'aa', 55, 9, 8, 'aa', 12, 'b', 12, 55, 45]
console.log(distinct(arr2, '<=arr2'))

 

字符串去重

let str = 'ghdgshfgdhgf'
//字符串去重
const rdStr = (data) => {return [...new Set(data)].join('')
}
str = rdStr(str);
console.log(str, '<=rdStr');


http://chatgpt.dhexx.cn/article/hMB1lTTK.shtml

相关文章

JavaScript数组去重—ES6的两种方式

说明 JavaScript数组去重这个问题&#xff0c;经常出现在面试题中&#xff0c;以前也写过一篇数组去重的文章&#xff0c;&#xff08;JavaScript 数组去重的多种方法原理详解&#xff09;但感觉代码还是有点不够简单&#xff0c;今天和大家再说两种方法&#xff0c;代码可是足…

ES6 Set() 数组去重

ES6 Set()去重 Set。它类似于数组&#xff0c;但是成员的值都是唯一的 通过add()方法向 Set 结构加入成员 let arr [1,2,3,4,1,5,2,3]; var set2 new Set(); arr.forEach(item>{set2.add(item) }) console.log(set2); console.log(Array.from(set2));let str [测试1,测试…

ES6数组去重的三个简单办法

ES6数组去重的三个简单办法 简单说一下利用ES6实现数组去重的三个办法。 第一种: 利用Map对象和数组的filter方法 贴上相关代码 打印后的结果 通过打印我们发现&#xff0c;确实实现了我们想要的效果。那么下面简单来解释一下。 1.Map对象是ES6提供的一个新的数据结构&…

一文弄懂Python中的*args 和 **kwargs

1. 引言 在本文中&#xff0c;我们将讨论 Python 中的 *args 和 **kwargs 及其用法和示例。 闲话少说&#xff0c;我们直接开始吧。 2. 问题引入 在Python中写函数的时候&#xff0c;我们经常需要给函数传值&#xff0c;这些值被称为函数参数。 我们不妨来举个栗子&#xff…

**kwargs python_python中**kwargs怎么用?

1、使用两个星号是收集关键字参数&#xff0c;可以将参数收集到一个字典中&#xff0c;参数的名字是字典的 “键”&#xff0c;对应的参数的值是字典的 “值”。请看下面的例子&#xff1a;>>> def print_kwargs(**kwargs): ... print(kwargs) ... >>> pr…

Python技巧:​args 和 kwargs 原来这么强大

大家好&#xff0c;今天我给大家分享Python技巧&#xff1a;​args 和 kwargs的相关技巧。喜欢记得收藏、关注、点赞。 注&#xff1a;完整代码、资料、技术交流文末获取 现在args和 kwargs参数仍然是 Python 中非常有用的特性&#xff0c;而且理解它们的威力将使您成为更有效…

*args和**kwargs是什么意思

去面试的时候&#xff0c;做了一道笔试题——什么是*args和**kwargs&#xff0c;区别在哪里&#xff1f; 有点蒙&#xff0c;好像见过&#xff0c;但是不知道具体的意思。所以回来查了一下资料&#xff0c;做一下笔记。 总的来说&#xff0c;*args代表任何多个无名参数&#x…

埃及分数c语言设计,埃及分数(四)

最优分解 源程序 下面就是求埃及分数最优分解的 C 语言源程序 EgyptianFraction.c&#xff1a; 1: #include 2: #include 3: #include 4: 5: const int SIZE 64; 6: static int wp -1, bp -1; 7: static mpz_t z, w, work[SIZE], best[SIZE]; 8: static mpq_t q1, q2; 9:…

埃及分数问题

问题描述: 古埃及人喜欢用最少的分子为 1 的真分数来表示一个真分数&#xff0c;比如7 / 8 1 / 2 1 / 3 1 / 24 。设计程序把一个真分数表示为最少的埃及分数之和的形式。 思路&#xff1a; 首先要知道什么是真分数&#xff1a;真分数是指大于0小于1的所有分数。这些分数的特…

贪心算法之埃及分数问题

1.问题&#xff1a;给定一个分数&#xff0c;如7/8&#xff0c;我们可以把它表示为1/2 1/3 1/24&#xff0c;埃及分数问题即把一个真分数表示为最少的埃及分数之和的形式&#xff0c;输入一个真分数把其分解为埃及分数之和。 2.设计思路&#xff1a;设分数为a/b,则cb/a,db%a,…

【数模】相关性分析

相关性&#xff1a;如果一个变量的变化引起了另一个变量的变化 目录 一、四种基本变量 二、 相关性分析方法 1.Pearson相关系数 2.Spearman 等级相关系数 3.Kendall tua-b 等级相关系数 4.卡方检测 5.Eta系数 *SPSS操作 三、偏相关 1.SPSS操作 2.偏相关系数和检验&…

数学建模-相关性分析及热力图

目录 一、相关性分析 二、相关性分析实例 三、三种相关系数 3.1 Pearson线性相关系数 3.2 Kendall tau系数 3.3 Spearman相关系数 4、Matlab代码 4.1 Pearson 显著性检验 4.2 Pearson 相关系数矩阵 4.3 Kendalltau相关系数矩阵 4.4 Spearman相关系数矩阵 5、代码…

R语言基础——简单相关性分析(1)

简单相关性分析&#xff08;1&#xff09; 简介1. 协方差和相关系数1.1 协方差1.2 相关系数 2. 相关性分析参考 简介 初次接触相关性分析&#xff0c;在摸索中前进&#xff0c;也顺便将笔记记录下来&#xff0c;未雨绸缪嘛&#xff01; 简单来说&#xff0c;相关性分析就是衡量…

分类变量、有序变量与数值变量相关性分析方法总结及 R 语言应用

文章目录 一、分类 & 分类相关性分析二、有序 & 有序相关性分析三、数值 & 数值相关性分析四、分类 & 有序相关性分析五、分类 & 数值相关性分析六、有序 & 数值相关性分析 本文全部假设显著性水平为0.05&#xff0c;特殊说明的除外。 一、分类 & …

数据分析方法和思维—相关性分析法

01 写在前面 在数据分析的问题中, 经常会遇见的一种问题就是相关的问题, 比如抖音短视频的产品经理经常要来问留存&#xff08;是否留下来&#xff09;和观看时长, 收藏的次数, 转发的次数, 关注的抖音博主数等等是否有相关性, 相关性有多大。 因为只有知道了哪些因素和留存比较…

python相关性分析_python实践统计学中的三大相关性系数,并绘制相关性分析的热力图...

本文首发地址&#xff1a; https://yishuihancheng.blog.csdn.net/article/details/83547648 欢迎关注我的博客【Together_CZ】&#xff0c;我是沂水寒城&#xff01; 今天我简单地使用了scipy模块进行了统计学中三大相关性分析方法&#xff08;皮尔森相关性系数、斯皮尔曼相…

数据相关性分析笔记

一、数据相关性的含义 数据类型 数据可以是连续的值&#xff0c;比如声音、图像&#xff0c;称为模拟数据。也可以是离散的&#xff0c;如符号、文字&#xff0c;称为数字数据。(ppt)数值型数据、分类型数据、定序数据。 数据相关性 数据相关性是指数据之间存在某种关系&#…

ArcGIS栅格数据图层空间相关性分析方法

ArcGIS栅格数据图层空间相关性分析方法 也不知道严谨不严谨&#xff0c;先Mark吧欸。 矢量的空间相关分析可以通过Spatial Join以后&#xff0c;导出属性表到EXCEL中&#xff0c;进行相关分析Correlation Analysis.  而两个栅格数据图层直接能不能直接在ArcMap中进行相关分…

IBM SPSS Statistics常用的相关性分析方法

灵活运用IBM SPSS Statistics做数据的统计和分析是每个数据分析师都应该掌握的技能&#xff0c;这款软件为用户提供了全面的数据分析方法&#xff0c;可以解决我们在数据分析过程中遇到的各种难题。 接下来小编就为大家介绍一下SPSS相关性分析的方法。 图1&#xff1a;SPSS软件…

神经网络相关性分析方法,神经网络相关性分析图

1、bp神经网络怎么确定输入与输出是正相关还是负相关&#xff1f; 想了解输入输出关系你可以求协方差&#xff0c;进而求peason相关系数 当然你也可以求spearman 等&#xff0c;看他们的相关度即可&#xff0c;正负就代表是正相关还是负相关&#xff0c;具体值代表相关性度量 …