您的当前位置:首页怎样使用js实现字符串去重及数组去重
广告

怎样使用js实现字符串去重及数组去重

2023-11-29 来源:酷申汽车网
这次给大家带来怎样使用js实现字符串去重及数组去重,使用js实现字符串去重及数组去重的注意事项有哪些,下面就是实战案例,一起来看一下。

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>js数组、字符串去重</title></head><body> <script type="text/javascript"> /*数组去重*/ function quchong(arr){ var len = arr.length; arr.sort(); for(var i=len-1;i>0;i--){ if(arr[i]==arr[i-1]){ arr.splice(i,1); } } return arr; } var a = ["a","a","b",'b','c','c','a','d']; var b = quchong(a); console.log(b); /*字符串去重*/ function quchongstr(str){ var a = str.match(/S+/g);//等价于str.split(/s+/g)// s空白符,S非空白符 a.sort(); for(var i=a.length-1;i>0;i--){ if(a[i]==a[i-1]){ a.splice(i,1); } } return a.join(" "); } var str = quchongstr("a a b a b e"); console.log(str); </script></body></html>

运行结果:

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

如何使用vue源码解析事件机制

如何操作JS获取用户所在城市及地理位置

小编还为您整理了以下内容,可能对您也有帮助:

数组去重方法 js

js数组去重的方法可以利用数组排序,通过相邻元素比较,去除重复元素。

去重,一般都是在面试的时候才会碰到,一般是要求手写数组去重方法的代码。在真实的项目中碰到的数组去重,一般都是后台去处理,很少让前端处理数组去重。虽然日常项目用到的概率比较低,但还是需要了解一下,以防面试的时候可能回被问到。

利用for嵌套for,然后splice去重(ES5中最常用)。双层循环,外层循环元素,内层循环时比较值。值相同时,则删去这个值。想快速学习更多常用的ES6语法,可以看一些相关的文章如《学习ES6笔记──工作中常用到的ES6语法》。

js数组去重的几种方法

利用数组排序,通过相邻元素比较,去除重复元素,可以严格匹配以区分数据类型。

借用对象属性方法,将数组中的元素添加为对象的属性。遍历数组元素的时候查询对象是否已经有该属性,如果有则不重复添加。

借用正则匹配的方法,将新数组转换为字符串。原数组中的每个元素与在字符串中查找,如果匹配到,则不添加。

使用js新特性的Map对象,使用键值对的方式修改第二种方法。或者利用Set对象,自动过滤掉重复项,而且可以判断数据类型。

数组去重方法 js

js数组去重的方法可以利用数组排序,通过相邻元素比较,去除重复元素。

去重,一般都是在面试的时候才会碰到,一般是要求手写数组去重方法的代码。在真实的项目中碰到的数组去重,一般都是后台去处理,很少让前端处理数组去重。虽然日常项目用到的概率比较低,但还是需要了解一下,以防面试的时候可能回被问到。

利用for嵌套for,然后splice去重(ES5中最常用)。双层循环,外层循环元素,内层循环时比较值。值相同时,则删去这个值。想快速学习更多常用的ES6语法,可以看一些相关的文章如《学习ES6笔记──工作中常用到的ES6语法》。

js数组去重的几种方法

利用数组排序,通过相邻元素比较,去除重复元素,可以严格匹配以区分数据类型。

借用对象属性方法,将数组中的元素添加为对象的属性。遍历数组元素的时候查询对象是否已经有该属性,如果有则不重复添加。

借用正则匹配的方法,将新数组转换为字符串。原数组中的每个元素与在字符串中查找,如果匹配到,则不添加。

使用js新特性的Map对象,使用键值对的方式修改第二种方法。或者利用Set对象,自动过滤掉重复项,而且可以判断数据类型。

利用javascript给数组去重的几种思路和实现代码汇总

1.遍历数组法

最简单的去重方法,实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中;注意点:判断值是否在数组的方法“indexOf”是ECMAScript5 方法,IE8以下不支持,需多写一些兼容低版本浏览器代码,源码如下:

2.对象键值对法

该方法执行的速度比其他任何方法都快, 就是占用的内存大一些,实现思路:新建一js对象以及新数组,遍历传入数组时,判断值是否为js对象的键,不是的话给对象新增该键并放入新数组。注意 点: 判断是否为js对象键时,会自动对传入的键执行“toString()”,不同的键可能会被误认为一样;例如: a[1]、a["1"] 。解决上述问题还是得调用“indexOf”。

3.数组下标判断法

还是得调用“indexOf”性能跟方法1差不多,实现思路:如果当前数组的第i项在当前数组中第一次出现的位置不是i,那么表示第i项是重复的,忽略掉。否则存入结果数组。

4.排序后相邻去除法

虽然原生数组的”sort”方法排序结果不怎么靠谱,但在不注重顺序的去重里该缺点毫无影响。实现思路:给传入数组排序,排序后相同值相邻,然后遍历时新数组只加入不与前一值重复的值。

5.优化遍历数组法

该方法的实现代码相当酷炫,实现思路:获取没重复的最右一值放入新数组。(检测到有重复值时终止当前循环同时进入顶层循环的下一轮判断)推荐

判断浏览器是否支持indexOf ,indexOf 为ecmaScript5新方法 IE8以下(包括IE8, IE8只支持部分ecma5)不支持

JavaScript数组去重的几种方法

前言

有时候我们做项目的时候往往会需要把数组里面一些重复的项去掉,但是原生JS有排序,有筛选等等,但是就是没有数组去重怎么办呢?

这能怎么办,自己手动实现嘛。

数组不像对象和hash有唯一的标志特征(key)。所以,数组去重的核心就是【1】数组内元素互相比较,然后放入新的数组中。【2】参照对象构建一个唯一的特征标志,然后放入新数组中。以下就是依照这种思路产生的方法。【3】数组中含对象的去重方式我采用使用JSON.stringify()将对象转换成JSON字符串进行比较的方式。

1.最基础的去重:双重遍历

双重遍历的核心就是依据【1】,通过拿出一个元素和剩下的元素依次比较,如果全部不相等则证明此元素为唯一。

let a=[{a:1},{b:2},{c:3},{a:1},{d:2}]

let c=[1,2,3,4,5,6,1,2,3]

function unique(arr){

let b=[]

for(let i=0;i<arr.length;i++){

let unexit=true

for(let j=i+1;j<arr.length;j++){

if(JSON.stringify(arr[i])===JSON.stringify(arr[j])){

unexit=false

break

}

else{

unexit=true

}

}

if(unexit){

b.push(arr[i])

}

}

return b

}

关于数组中存在对象,是采用JSON.stringify()转换成JSON字符串进行的比较,后续不再叙述。双重遍历的缺点是复杂度太高。

上面的代码去重得到的结果的顺序会改变,所以如果想要顺序按照原有顺序,数组在进行去重时建议重新申明一个新的数组(var new=old.reverse() )得到一个新的相反的数组,最后再使用reverse()。之所以新建数组而不是直接取反是因为:reverse()会修改原数组。

2.Array.prototype.sort():相邻元素去重

相邻元素去重的核心在于Array.sort()能够对数组进行排序。这样相等的数组就会在相邻的位置,通过比较相邻的元素就可以起到去重的作用【1】。

let c=[1,2,3,4,5,6,1,2,3]

function unique(arr){

let Arr=arr.sort()

let b=[]

for(let i=0;i<Arr.length;i++){

if(Arr[i]!==Arr[i+1]){

b.push(Arr[i])

}

}

return b

}

Array.prototype.sort()方法可以使用array.sort((a,b)=>{a.key-b.ky})进行对象的排序,前提是数组中的对象存在相同的key值。

3.Object.keys():存在唯一性

在一个对象里面key值是唯一的,所以通过遍历数组给每个数组一个标志,通过标志去重【2】

let a=[{a:1},{b:2},{c:3},{a:1},{d:2}]

let c=[1,2,3,4,5,6,1,2,3]

function unique(arr){

let b=[]

let hash={}

for(let i=0;i<arr.length;i++){

if(!hash[JSON.stringify(arr[i])]){

hash[JSON.stringify(arr[i])]=true

b.push(arr[i])

}

}

return b

}

4.双重遍历去重改良之:indexOf

双重遍历的思路我们都知道,先拿出一个元素,然后使用循环再次遍历数组去一一比较。如果有一个方式能够让我们不再遍历一遍数组,那么复杂度相对而言会减少一点。

indexOf 方法返回给定元素在数组中第一次出现的位置,如果没有出现则返回-1。首先我们新建一个空数组(arry),如果:arry.indexOf(数组元素)===-1,那么我们就可以知道arry中不存在元素。

let c=[1,2,3,4,5,6,1,2,3]

function unique(arr){

let b=[]

for(let i=0;i<arr.length;i++){

if(b.indexOf(arr[i])==-1){

b.push(arr[i])

}

}

return b

}

indexOf 方法可返回某个指定的字符串值在字符串中首次出现的位置。所以对象不适用,因为对象转为字符串就都会变成{object,object} ,无法比较。

5.循环遍历之:map()/forEach()

map()和forEach()都可以实现遍历数组。所以以上的方法都可以用map()、forEach()改写。下面我只简单的改写一个,其他的改写方式参照即可。

let c=[1,2,3,4,5,6,1,2,3]

function unique(arr){

let b=[]

arr.forEach(res=>{

if(b.indexOf(res)==-1){

b.push(res)

}

})

return b

}

6.ES6:Set数据结构

Set数据类似于数组,但是成员的值都是唯一的,没有重复的值。它可以接收一个数组,类于:let a=[1,2,3,1,2] Set(a)=>1,2,3 所以可以使用Set()实现去重。

let c=[1,2,3,4,5,6,1,2,3]

function unique(arr){

let b=new Set(arr)

let c=Array.from(b)

return c

}

Set去重不适用于含对象的数组,因为Set的去重参照的是(===),数组中的元素对象,虽然可能数值相等,但是地址不相等。所以Set无法实现去重。

7.总结

实现数组的去重,要么通过元素对比,要么设置特殊标志识别。元素对比的思路有2种:一种是和原数组一一对比;另一种和新的数组对比。

如果要实现含对象的数组去重,一般使用遍历的方式,包括使用遍历类的方法(map、forEach、rece等)。像Set、sort等通过改变数组的方式一般是不可行的。

好了,

酷申汽车网还为您提供以下相关内容希望对您有帮助:

JavaScript数组去重的几种方法

【3】数组中含对象的去重方式我采用使用JSON.stringify()将对象转换成JSON字符串进行比较的方式。1.最基础的去重:双重遍历双重遍历的核心就是依据【1】,通过拿出一个元素和剩下的元素依次比较,如果全部不相等则证明此元素...

JS 中常见的几种去重方法

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素 indexOf ( searchvalue, fromindex ) searchvalue :必填值,规定需检索的字符串值 fromindex :选填值,规定在字符串中开...

数组去重方法 js

借用正则匹配的方法,将新数组转换为字符串。原数组中的每个元素与在字符串中查找,如果匹配到,则不添加。使用js新特性的Map对象,使用键值对的方式修改第二种方法。或者利用Set对象,自动过滤掉重复项,而且可以判断数据类型。

js中数组去重方法总结

1.es6有了Set,可以通过成员唯一性去重 2.使用数组对象的lastIndexOf()方法。(关于lastIndexOf():( https://www.jianshu.com/p/d75886bc6c75 )3.定义新数组,存入原数组第一个元素,再将原数组元素和新数组元素比较...

js中怎么把数组中重复的数据取出来

1、首先,打开html编辑器,新建html文件,例如:index.html。2、在index.html的标签中,输入js代码:var a = [1, 6, 8, 5, 23, 6, 6, 7, 8], b = [], c = [];for (var i = 0; i &lt; a.length; ...

js 中如何去掉数组中的重复的数据

可以使用js的for循环筛选实现去掉数组中的重复的数据。具体步骤如下:需要准备的材料分别是:电脑、浏览器、ultraedit。1、在ue编辑器中新建一个空白的html文件,js文件。2、在ue编辑器中输入以下html代码。3、在ue编辑器中...

js 二维数组去重

方法    //去重     quchong() {       var newArr = [];      for (var i = 0; i &lt; this.arr.length; i++) {     &amp;...

js 数组 数据去重排序

unshift() 在数组开头添加元素 push() 在数组末尾添加元素 shift() 删除数组中的第一个元素 pop() 删除数组中的最后一个元素 toString() 将数组转换为字符串 join() 将数组元素连接成字符串 concat() 多个数组连接...

用JS比较两个字符串,删除相同部分怎么做?

这需要运用到js中的去重方法, substring()截取字符串,只匹配到前面不看后面 10.substr()截取字符串通过长度来匹配 11.push()向数组尾部添加一个元素或者多个元素 12.pop()返回素组被删除的对象 13.unshift()返回...

关于如何去除数组中重复项

数组去重,就是在数组中查找相同的元素,保留其中一个,去除其他元素的程。从这句话揭示了数组去重的两个关键因素:找到重复项 去除重复项 本文告诉你在遇到去重问题时该如何思考,并以 JavaScript 为例,进行详细解释。使用 ...

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

Top