js的 算法 和 數據結構

js的 算法

一、對一個對象數組按照對象某個屬性進行排序  : http://www.javashuo.com/article/p-gxuuobev-dr.htmlhtml

  在作公交的項目中就碰到過這種算法問題,從後臺請求回來的一大堆的數據,都須要前端處理。因此就把這個問題寫進博客裏。前端

   只要是 js的sort()方法 的使用:http://www.javashuo.com/article/p-gadlxnpe-dv.htmles6

     sort()方法 的執行過程web

   (我的分析) sort()函數的 比較函數,在執行時,js程序會依次把 數組的項,兩個兩個的傳遞給比較函數的形參。算法

  根據比較函數的返回值 是否大於0,再決定傳遞進來的這兩項是否要對換位置。數組

        arr.sort(function(a,b){
            return a-b;   // return的值爲 正或0,則數組中a、b對應的實參 不調換位置。
        });               // return的值爲 負,則數組中a、b對應的實參 調換位置。

   經過測試,發現數組arr中的取某兩個項的組合,並無所有都進入了比較函數中(這個內部是怎麼實現的,咱們能夠不用深究),瀏覽器

  可是最後的結果就是按照順序return中要求的比較的規則進行排序了。數據結構

      var arr = [4,3,8,2,6];
      console.log("起始",arr);
      arr.sort(function(a,b){
          console.log(a,b);  // 這裏輸出的並無把arr全部的組合所有都執行了一遍比較函數,內部確定經過某種方式實現了最少次的比較,獲得數值全部項按照順序排列。 return a-b;     // 這裏內部具體是經過什麼機制實現的最少次比較的,能夠不用太過深究
      });
      //  4 3
      //  4 8
      //  8 2
      //  4 2
      //  3 2
      //  8 6
      //  4 6

二、冒泡排序(將數值按照大小順序進行排列): http://www.javashuo.com/article/p-bdcxjfdm-h.htmlapp

三、數組中的最小值和最大值:http://www.javashuo.com/article/p-xzwdvmiv-hp.html  或  https://www.cnblogs.com/ywx354980-bk/p/8718541.html函數

  a、排序法:     

  b、js中Math 對象的 min 和 max 方法 :

     min 和 max 方法的參數都是數值,而不是數組。因此要利用min和max方法必需要把數組的值一個一個取出來做爲參數。

     apply方法 的第二個參數是數組,傳遞到 劫持(繼承)對象方法的參數, 是數組中的值一個一個傳遞過去(而不是一個對象)。即 apply數組參數 --> 繼承對象方法的arguments。而對象的參數是 arguments[ i ]

   注:不過es6中有一個  展開運算符(...),能夠將數值或對象兩邊的 [] 或 {} 去掉的功能。因此min 和 max能夠經過 展開運算符 直接實現。

  

 

 

四、數組中全部的值 與 一個已知值的 的差值的最小值:

    

我的體會:算法基本 和 數組有關,因此數組有關的API要熟練。

總結:通常在js中涉及到的算法就  排序算法、二分查找、動態規劃(最好避免使用遞歸的算法,效率過低了,容易引發瀏覽器假死狀態)


別人的關於js算法的博客:

一、JS常見的算法 : http://www.javashuo.com/article/p-mrbzjehz-nb.html

 

js的 數據結構

一、我的以爲,數據結構要考慮的也就對象、數組兩種。其餘的數據結構,不多去用到。

 


 

 

相關文章
相關標籤/搜索