js字符串去重解析

字符串去重是我们平常面试中经常遇到的问题,今天来详细的解释一下通过使用indexOf来实现字符串去重,然后再详细的解释一下为什么这样写,接下来上代码咯:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>数组去重</title>
</head>
<body>
    <script>
         var str = 'asdffgwqqwssaxcvfghhdqwsda'
         function quchong(str) {
             var newStr = "";
             for(var i = 0,len=str.length;i<len;i++) {
                  if(newStr.indexOf(str[i]) == -1){
                      newStr += str[i]
                  }
             }
             return newStr
         }
         console.log(quchong(str))
    </script>
</body>
</html>

首先要解释一下indexOf这个方法:可返回某个指定的字符串值在字符串中首次出现的位置。
语法:
stringObject.indexOf(searchvalue,fromindex)

参数描述
searchvalue必须值,规定需要检索的字符串值
fromindex可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的首字符开始检索。

具体参考:http://www.w3school.com.cn/jsref/jsref_indexOf.asp

举个栗子:

   var str = 'asdffgwqqwssaxcvfghhdqwsda'
         console.log(str.indexOf('a',1))

这句的意思是我从第一个索引去找到下一个a这个字符串,而下一个返回的字符串的位置是12,所以会返回12。

   var str = 'asdffgwqqwssaxcvfghhdqwsda'
         console.log(str.indexOf('a'))

如果我们只填这一个参数的话,那么就是搜索到这个a的索引就会停止,那么就是0了。

现在解释这个字符串去重也就是去解析下最?面的那代码:

     var str = 'asdffgwqqwssaxcvfghhdqwsda'
         function quchong(str) {
             var newStr = "";    //1.首先我们要定义一个空的变量;
            //2.循环我们的字符串,并使用indexOf方法,因为newStr是一个空的,所以当它使用indexOf方法的时候都是-1因为没有值与它对比,所以等于-1的值也都是唯一的值
             for(var i = 0,len=str.length;i<len;i++) {
                 //我们将==-1的值写到newStr中就吧str中重复的值过滤掉了
                  if(newStr.indexOf(str[i]) == -1){
                      newStr += str[i]
                  }
             }
             return newStr
         }
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月落星河°

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值