數組問題

一,數組去重數組

利用indexOfbash

function unqiue(ary) {
        var newArr = [];
        for (var i = 0 ; i < ary.length ; i++){
            var cur = ary[i];
            if (newArr.indexOf(cur) === -1) {
                newArr.push(cur);
            }
        }
        return newArr;
    };
    var res = unqiue([3,5,5,6,3,2,1,3,2]);
    console.log(res);

複製代碼

利用對象方法去重ui

function unique(ary) {
       var obj = {};
       var newArr = [];
       for (let i = 0; i < ary.length; i++) {
           const arr = ary[i];
           if(!obj[arr]){
               newArr.push(arr);
               obj[arr] = true;
           }
       }
       obj = null;
       return newArr;
   }

   var res = unique([3,45,6,3,45]);
   console.log(res);
複製代碼

雙for循環去重 避免數組塌陷問題,j++後利用j--.spa

for (let i = 0; i < ary.length; i++) {
        const aryE = ary[i];
        for (let j = i + 1; j < ary.length; j++) {
           if(aryE === ary[j]){
               ary.splice(j,1);
               j--;
          }
      }
複製代碼

二,數組排序3d

1.冒泡排序code

主要是當前項和後一項比較,若是當前項大於後一項,就交換位置,在比較中,數組一共須要比較arr.length - 1輪,每一輪比較都會獲得一個最大值,其中在兩輪比較中,已經有兩個最大值,因此不須要比較,所以,以下大媽cdn

(引用圖片)

function bubbleSort(ary) {
          
         // 外層循環控制比較輪數 i的值標記幾輪
         for (var i = 0; i < ary.length - 1; i++) {
           // 內層循環控制比較次數
           for (var j = 0; j < ary.length - 1 - i; j++) {
             if (ary[j] > ary[j + 1]) {
                var temp = ary[j];
                ary[j] = ary[j + 1];
                ary[j + 1] = temp;
             }
           }
         }
         return ary;
      }
      console.log(bubbleSort(arr))
複製代碼

2.選擇排序對象

每輪在未排序的序列中,找到最小元素,每輪比較完,就讓最小元素和起始的那一項交換位置blog

(引用圖片)

function select_sort(ary) {
      // 外層循環負責指定比較的起始位置
      for (var i = 0; i < ary.length - 1; i++) {       
      // minIdx每次最小值索引位置
        var minIdx = i 
        for (var j = i + 1; j < ary.length; j++) {
          if (ary[j] < ary[minIdx]) {
            minIdx = j
          }
        }
        // 比較完每輪 讓最小值arr[minIdx]和起始位置那一項arr[i]交換位置
        var temp = ary[i]
        ary[i] = ary[minIdx]
        ary[minIdx] = temp
      }
      return ary
    }
複製代碼
相關文章
相關標籤/搜索