宝哥软件园

JS重复数据删除和字符串奇数小写到大写的详细说明

编辑:宝哥软件园 来源:互联网 时间:2021-09-06

在面试中,我们经常会得到数组的重复消除。作为一个合格的前端开发人员,不知道是否应该采用几种去重方法。别瞎说,打开就行了.

一、indexOf()方法

实现思路:使用indexOf()方法判断新数组中是否有这个值,如果没有,则将这个值推送到数组中

//首先定义一个数组vararr=[,'','',];函数remov(array){ var arr=[];for (var i=,len=array.length伊琳;I){ if(arr . indexof(array[I])==-){ arr . push(array[I])} }返回arr} console . log(remov(arr));//[,'','',]代码非常简单,说明indexOf()是ES5中的一个方法,与IE8不兼容,所以在使用之前要考虑兼容性。

其次,sort()确定相邻的两个数字

实现思路:首先利用数组的sort()方法对数组进行升序排序,然后判断相邻两个数是否相等,如果不相等,则将前一个数推送到新创建的数组中

var arr=[,'','',];函数remov(array){ var LinaRR=[];array . sort();for (var i=,len=array.length我透镜;i ) { if (array[i ]!==array[I]){ linar . push(array[I])} }返回linArr} console . log(remov(arr));//['',' ',]第三,创建一个空对象和一个空数组

实现思路:在for循环中,判断对象中是否有当前项,如果没有,则将当前项推送到新创建的数组中,并将当前项作为对象的属性赋给1

var arr=[,'','',];函数remov(array){ var RES=[];var obj={ };对于(var I=;iarray.lengthi ){ if(!obj[array[I]]){ RES . push(array[I]);obj[array[I]]=;} }返回res} console . log(remov(arr));//[,'','',]至于为什么把当前项作为对象的一个属性赋给这里的1,比如数组中的5,第一次对象中没有5的属性,我们把它推送到新的数组中,如果没有赋5的属性,下一次检测到第二个5,就会推送到新的数组中。因此,当前项目作为对象的属性被分配给1,但它也可以被分配给其他值。有点啰嗦,懂的人可以跳过.

你有没有注意到第三种方法的字符串‘4’和值4在这里无法判断,所以有一点小缺点。

第四,这种方法和第三种方法借鉴了第三种方法

实现思路:在for循环中,判断对象中是否有当前项;如果不是,则将当前项作为对象的属性,赋为1;否则,当前项目。for循环完成后,使用中的遍历对象中的属性

var arr=[,'','',];函数remov(array){ var obj={ };var RES=[];对于(var I=;iarray.lengthi ){ if(!obj[array[I]]){ obj[array[I]]=;} else { obj[array[I]];} } for(var k in obj){ RES . push(k);//B .这里,将遍历的对象属性推送到新创建的数组中。//console . log(k);//a .直接打印出遍历对象的属性}返回res//b .这里返回新创建的array } console . log(remov(arr));//B .在这里打印出remov(arr)函数的执行结果【】、“”、“”、“”、“”、“”、“”、“”、“”)//remov(arr);//a这个方法有一个小问题:如果标注中有a,则直接打印被遍历的对象属性,结果如下

注释中的b是将遍历对象的属性推送到新创建的数组中,打印出来的数组全是字符串。

五个,两个用于循环遍历

实现思路:这种方法要多用。创建一个空数组,将一个数组值保存到第一个for循环中的变量item中,将新创建的数组的值与第二个for循环中的变量进行比较,如果相等则break,第二个for循环结束后判断新创建的数组的长度是否等于第二个循环中的j变量,如果相等则向新创建的数组中添加第一个循环中的item。

var arr=[,'','',];函数remov(array){ var RES=[];for (var i=,len=array.length伊琳;I){ var item=array[I];for(var j=;jres.lengthj){ if(RES[j]==item){ break;} } if(RES . length==j){ RES . push(item);} }返回res} console . log(remov(arr));//[,'','',]当然,还有很多其他的阵列重复数据消除方法,这里就整理了这么多。请指出任何错误或不规范之处,让我们一起讨论和学习。

添加面试问题:

标题描述:从1开始对输入字符串进行编号。如果遇到奇数小写英文字母,会转换成对应的大写字母。如果遇到非英文字母,奇数和偶数将不被计算在内,但字符将被保留

var str='sdt$^uyggtdgabn';document . write(str ' br/');//将原始字符串输出到文档var j=,reg=/[a-Za-Z]/;//j变量用于计数和定义一个正则表达式,以判断它是否是字母var sArr=str . split(' ');//将字符串转换为(var I=;isArr.lengthI) {if (reg。test(sarr[I])} {//如果是字母j j=;If (j%==){//如果是奇数,将当前项目转换为大写的sArr[i]=sArr[i]。toUpperCase();} } } str=SarR . join(“”);//将数组转换为字符串文档. write(str);//将转换后的字符串输出到文档中,并附上转换前后字符串的比较图

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

更多资讯
游戏推荐
更多+