数组去重的方式有很多种,现总结一些备以后查漏补缺来用。
对基本数组类型去重:(1)set 和 array.from()实现
var str, strs = ["a", "b", "c", "er", "d", "er", "a", "b", "c"]; function removeRepeat(arr) { return Array.from(new Set(arr)) } console.log(removeRepeat(strs)) //["a", "b", "c", "er", "d"]
(2) indexOf和forEach()
var str=[], strs = ["a", "b", "c", "er", "d", "er", "a", "b", "c"]; function removeRepeat() { strs.forEach(v=>{ if(str.indexOf(v) < 0) str.push(v) }) console.log(str) //["a", "b", "c", "er", "d"] }
(3)map 和 filter
var str=[], strs = ["a", "b", "c", "er", "d", "er", "a", "b", "c"]; function removeRepeat(arr) { const unique = new Map() return arr.filter(v=>{ return !unique.has(v) && unique.set(v,1) }) } console.log(removeRepeat(strs)) //["a", "b", "c", "er", "d"]延伸1:需要对数组排序去重
var str=[], strs = ["a", "b", "c", "er", "d", "er", "a", "b", "c"]; function removeRepeat(arr) { let arry = arr.sort() return arr.sort().filter((v,index) => { return !index || v !== arry[index-1] }) } console.log(removeRepeat(strs))// ["a", "b", "c", "d", "er"]延伸2:某一个元素只出现一次
(1)利用filter,indexof,lastIndexOf对基本类型数组去重复元素
var str, strs = ["a", "b", "c", "er", "d", "er", "a", "b", "c"]; function removeRepeat() { str = strs.filter(function (value, index, array) { return array.indexOf(value) === array.lastIndexOf(value); }) console.log(str) //["d"] }
(2)利用lastIndexOf,splice对基本类型数组去重复元素
var str, strs = ["a", "b", "c", "er", "d", "er", "a", "b", "c"]; function removeRepeat() { for (var i = 0; i < strs.length; i++) { if (i !== strs.lastIndexOf(strs[i])) strs.splice(i, 1); } console.log(str) //["d"] }
(1)和(2)的方法大同小异,原理是一样
延伸3:对数组对象进行去重var Messages = [ { "timestamp": 1474328370007, "message": "hello" }, { "timestamp": 1474328302520, "message": "how are you" }, { "timestamp": 1474328370007, "message": "hello" }, { "timestamp": 1474328370007, "message": "hello" } ] var NoRepeatMessages = []; function RemoveRepeat(arr) { var hashFlag = {} arr.forEach((v,index) => { if (!hashFlag[v.timestamp]) { hashFlag[v.timestamp] = true; NoRepeatMessages.push(v); } }); console.log(NoRepeatMessages) //[{"timestamp": 1474328370007,"message": "hello"},{ "timestamp": 1474328302520,"message": "how are you"}] } RemoveRepeat(Messages)
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/94851.html
摘要:数组去重看了网上很多数组去重方法,用的比较常见的大概就几种,今天想自己来做一个总结。还有就是方法返回的数组也是排序后的数组,某些情况下可能不符合要求。 JS数组去重 看了网上很多数组去重方法,用的比较常见的大概就几种,今天想自己来做一个总结。部分内容参考该博客 1 . 在原数组上操作(基本方法) 思路:利用循环嵌套,判断数组中每个元素与其后面的元素是否相等,如果相等,就使用spli...
摘要:基本操作数组去重写在前面数组去重经常出现在前端招聘的笔试题里,比如有数组,请用实现去重函数,使得返回作为笔试题,考点有二正确。基本介绍文章主要是对数组去重的常用方法进行介绍。 js基本操作-数组去重 写在前面 JavaScript 数组去重经常出现在前端招聘的笔试题里,比如: 有数组 var arr = [a, b, c, 1, 0, c, 1, , 1, 0],请用 JavaScr...
摘要:基本操作数组去重数组去重的方法临时数组保存其实这里面还没考虑到数组里面嵌套数组对象的情况把去重后的结果放在一个临时数组中对原来数组的元素与临时数组元素比较临时数组中不存在这个元素的放入临时数组。 js基本操作-数组去重 数组去重的方法 1. 临时数组保存(其实这里面还没考虑到数组里面嵌套数组/对象的情况) 把去重后的结果放在一个临时数组中, 对原来数组的元素与临时数组元素比较, 临时...
摘要:注方法可以返回某个指定字符串在字符串中首次出现的位置比如首次出现的位置是数组中的第一个,即下标为遍历数组使用标识符去重声明一个变量标识排序后遍历过滤数组思路先给数组排序,这样相同的项总是相邻。 假设我们有数组arr,并且声明新数组hash用来存放去重后的元素: var arr = [23,44,5,2,23,5,1,7,8,7]; //包含重复元素 var hash= [];...
阅读 564·2021-11-22 14:45
阅读 3049·2021-10-15 09:41
阅读 1493·2021-10-11 10:58
阅读 2673·2021-09-04 16:45
阅读 2583·2021-09-03 10:45
阅读 3216·2019-08-30 15:53
阅读 1202·2019-08-29 12:28
阅读 2100·2019-08-29 12:14