冒泡排序、數組去重、判斷每個值在數組中出現的次數。。


莫愁前路無知己,天下誰人不識君--- 唐.高適《別董大二首》

本文的數組排序,數組去重,判斷出現的次數,都不使用數組的方法。

具體的流程思想在代碼注釋中

一、冒泡排序

//冒泡排序:
    var arr = [1,2,3,5,4];
    var j,temp,flag;
    var count = 0;//用於記錄比較的輪數
    //外層循環控制比較的趟數
    //使用假設成立法:(使用變量標記的方式)
    //1 找到程序中不確定的操作,設置假設條件
    //2 對假設條件進行驗證(設置一個可以使假設失敗的條件)
    //3 對假設條件的最終值進行檢測,設置操作
    for(var i = 0;i < arr.length - 1; i++){
      count++;
      flag true;//假設本輪執行排序后可以跳出
      for(j = 0; j < arr.length - 1 - i; j++){
        if(arr[j] > arr[j+1]){
          temp = arr[j];
          arr[j] = arr[j+1];
          arr[j+1] = temp;
          //只要進入到if中,說明排序可能沒有完畢,設置假設條件為false
          //阻止跳出
          flag = false;
        }
      }
        if(flag){
        break;
      }
    }
    console.log(arr,count);

一、數組去重

//數組去重:
    var arr = [5,1,2,1,2,2,1,2,1,2,3,4,3,4,5,3,4,5,4,3,2,1];
    //希望得到的結果為[1,2,3,4,5]
    //1 創建一個結果數組
    var resultArr = [arr[0]];
    var flag;
    //2 遍歷數組
    for(var i = 1; i < arr.length; i++){
      // 正確的實現方式
      flag = true;//假設當前arr[i]可以放入到resultArr中
      for(j = 0; j < resultArr.length; j++){
        //設置可以讓假設失敗的條件:如果偶遇任何一個元素相等,即說明不能放入
        if(arr[i] === resultArr[j]){
          flag false;
       }
      }
      //根據flag的值設置最終操作
      if(flag){
        resultArr.push(arr[i]);
      }
    }
    console.log(resultArr);

簡單介紹一下Set:Set是ES6中新的對象,數組去重特別方便。只需要兩行代碼

//先定義一個重復的數組
var
arr = [1,1,2,2,2,3,3,4,4] var set = new Set(arr) // {1,2,3,4} var newArr = Array.from(set) // 再將set轉變成array console.log(newArr) // [1,2,3,4]

實現的原理:SetArray的區別在於:Array中允許出現重復的元素,例如[1,2,2,3];而Set中的所有元素都是唯一的,只能是{1,2,3}。利用這一特性,我們就可以迅速地去掉數組中重復的元素。

 

三、出現的次數

 補充:第一種方法略麻煩,數組去重后,然后比較出現的次數,略麻煩已刪除,推薦第二種

第二種方法 (推薦第二種方法)

   // 先定義一個數組
    var arr=["a","a","a","a","b","b","b","c","c","c"]
//再定義一個對象,用來保存相同的數據
    var obj={}
    for(var i=0;i<arr.length;i++){
      //將循環數組中的每個數賦值給item 作為對象中的鍵
      var item=arr[i]
      if(obj[item]){//這句的意思是對象中以item作為鍵存在嗎,如果存在的話,就讓這鍵的值再加1
        obj[item]=obj[item]+1
      }else{
        //如果不存在等於1,多次循環就可得到結果
        obj[item]=1
      }
    }
    console.log(obj)//結果:{a: 4, b: 3, c: 3}
 
        
 
        

 




免責聲明!

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



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