數組 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{

        if(str2.indexOf(arr1[i])<0){       //這個字母在字符串 str 中可能出現多次,所以要再判斷,避免將重復的元素全部輸出。

          str2+=arr1[i];

        }

      }

  }

  console.log(str2);  在控制台輸出的結果是   aer

 

如有不足之處,歡迎交流。

            

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM