数组indexOf()
  众所周知,indexOf()这个⽅法经常出现在字符串的使⽤中,也许是⽤来寻字符串中某⼀字符在字符串中的位置,或者也可以⽤来寻字符串中重复出现的字符有哪些。对于刚接触 JS 的我们来说,在对数组的操作中常⽤的是向数组添加元素(push()和
unshift())、从数组中删除元素(pop()和shift()),对于不常⽤的  indexOf()⽅法,我们则是⼀脸懵逼,但是这个⽅法却有很强⼤的作⽤,下⾯直接来个demo:
  清除数组中重复出现的元素:
  var    arr1 = [ 1,3,3,4,4 , 4,"aba","aba" ];  //数组字⾯量的形式创建数组。
  var    arr2 = [ ];
  for ( var i=0; i<arr1.length; i++){
    if(arr2.indexOf(arr1[i])<0){          // 在数组arr2中匹配是否有arr[i]这个元素存在,有就返回这个元素在数组中的下表位置,没有匹配返回-1
      arr2.push(arr1[i]);
    }
  }
  console.log(arr2);    在控制台(f12 热键打开开发者⼯具)输出的结果是
  1 , 3 , 4 , "aba"
  怎么计算数组中元素重复出现的次数?这就运⽤到了对象概念的理解:
   var    arr1 = [ 1,3,3,4,4,4,"aba","aba" ];
    var    obj = {};
    for( var  i=0 ;i< arr1.length; i++){
      if( !obj[arr1[i]] ){                      //访问对象属性的⽅式
        obj[arr1[i]] = 1;              //设置对象属性
      }
      else{
        obj[arr1[i]]++;
      }
    }
  for (key in obj){
    console.log(key+":"+obj[key]);   
   }
  依据数组清除重复元素的原理,我们也能写出查字符串中重复出现的字母有哪些:
  var  str = "abareevadrgr";
  var  str2 = "";                    // 存放重复的元素
  var  arr1 =str.split("");    //将字符串转换成数组。
  var  arr2 =  [ ];
  for (var i =0 ; i<arr1.length ; i++){
    if( arr2.indexOf(arr1[i])<0){
      arr2.push(arr[i]);                  //  起到⼀个中转战的作⽤,以此来排除重复元素。
    }
    else{
indexof能用于数组吗        if(str2.indexOf(arr1[i])<0){      //这个字母在字符串 str 中可能出现多次,所以要再判断,避免将重复的元素全部输出。
          str2+=arr1[i];
        }
      }
  }
  console.log(str2);  在控制台输出的结果是  aer 如有不⾜之处,欢迎交流。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。