[记录]es6常用去重方法(数组、字符串)
数组去重
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');
[记录]es6常用去重方法(数组、字符串)相关推荐
- Sql 学习查询多种条件(记录自己常用一些方法,本人学习用)
Sql 学习查询多种条件(记录自己常用一些方法,本人学习用) 根据 PROCDEFID 对表 BO_ACT_MPDL_PROCESS 最后就行查重 查出多余重复的数据 1.in和exists 方式二: ...
- java的知识点15——String基础、String类和常量池、String类常用的方法、字符串相等的判断、组合模式
String基础 1. String类又称作不可变字符序列. 2. String位于java.lang包中,Java程序默认导入java.lang包下的所有类. 3. Java字符串就是Unicode ...
- php时间操作函数总结,基于php常用函数总结(数组,字符串,时间,文件操作)
数组:[重点1]implode(分隔,arr) 把数组值数据按指定字符连接起来 例如: $arr=array('1','2','3','4'); $str=implode('-',$arr); exp ...
- python字符串常用的方法_python字符串常用方法
1. isalnum() :判断字符串所有的字符都是字母或者数字.返回true和false In [1]: str1='jiangwei520' In [2]: str2='jiang wei' In ...
- JavaScript 一维数组、二维数组(某个属性)去重方法
1.使用ES6语法 set方法数组去重:: a=[1,2,3,4,1,2,3,4]; [...new Set(a)]; //[1, 2, 3, 4] 2.一维数组去重方法 function uniqu ...
- [python]开发IC utility 一些常用的方法和函数和语法规则
文章目录 字符串的replace 字符串的split 字符串的strip 循环for in 判断语句中的and not re.search与re.match 合并元素为一个字符串 判断提供的path是 ...
- js中数组常用的方法总结,包括ES6
原文地址:js中数组常用的方法总结,包括ES6 1.push() 后增 push()方法可以向数组后添加一个新的元素,并返回新数组的长度. 末尾添加,返回长度,改变原数组 var a = [1,2,3 ...
- 常用的js数组去重的方法
常用的js数组去重的方法 1. 使用for循环去重 2.使用set对象去重 3.使用数组索引indexOf()方法搭配for循环去重 4.使用includes()方法搭配for循环去重 5.使用fif ...
- es6 数组去重_JS数组去重的9种方法(包括去重NaN和复杂数组类型)
其实网上已经有很多js数组的去重方法,但是我看了很多篇并自己通过代码验证,发现都有一些缺陷,于是在研究多篇代码之后,自己总结了9种方法,如果有哪里不对请及时纠正我哈~ 测试代码 let arr1 = ...
最新文章
- linux 系统调用 read,write和lseek 使用
- oop第二章1知识点汇总
- 脊回归(Ridge Regression) 岭回归
- BootStrap 效果展示
- Linux(内核和用户态的)动态内存管理
- .NET/.NET Core中更清晰的堆栈跟踪
- 百度地图LV1.5实践项目开发工具类bmap.util.jsV1.2
- 声音均衡器怎么调好听_汽车10段音效最佳设置,手把手教你调节车载音响均衡器...
- Visual Studio Code快速删除空行及几个常用快捷键总结
- 遍历界面控件 android,Android 判断所有字段是否已经输入的实例
- JavaScript权威指南 - 数组
- QT程序自动拷贝所需动态库批处理
- LVS和Keeplive
- tp框架like模糊查询报错
- 使用链表实现栈stack
- 书写软件之钢笔笔迹实现(一)
- 笛卡尔坐标系中八个卦限对应的位置
- 8000字解读全域用户体验丨星巴克的尖刀与钝点
- c++QT笔记,windows毛玻璃窗口实现封装
- 期货中的正向交易与反向交易