首頁 >web前端 >js教程 >js求數組的最大值,巧方法與笨方法你用什麼方法

js求數組的最大值,巧方法與笨方法你用什麼方法

yulia
yulia原創
2018-09-08 17:24:231834瀏覽

寫這篇文章的原因

我目前做的專案很少用到演算法,於是這方面的東西自然就有點兒生疏。最近的一次編碼中遇到了從數組中獲取最大值的需求,當時我不自覺的想到了js的sort()函數,現在想來真是有些“罪過”,當時自己內心還覺得有些得意:“嗯,我用js的內建方法解決了一個通常需要用排序演算法才能解決的問題,程式碼簡短,不用去寫頭痛的遍歷和比較,可讀性還好。。。」。內心戲很重,對吧。咳咳,哎,自己還是嫩而且還懶。 js內生的sort函數也是用到了排序,詳見segmentfault上的這個js內生sort()函數是如何實現的。

奇技淫巧
js中有很多“奇技淫巧”,有時我會常常刻意去用這些“奇技淫巧”(注意,我不是在反對用它,只是有時其實沒必要用)。例如,求數組中的最大值,js中Array沒有原生的求最大值的方法,但是Math有呀:

Math.max(22, 79, 33) // 79

 如果數組想用也是可以用的呀:

 var arr = [22, 79, 33];
 Math.max.apply(null, arr); // 79

或不用apply方法,你把陣列轉換成字串,用eval()方法來執行拼接為「Math.max(num1, num2, num3)」的js程式碼也是可以的:

 var max = eval("Math.max(" + arr.join(',') + ")"); // 79

如果這個你沒想到,你就用我上面提到的sort()函數也是可以的呀:

var arr = [22, 79, 33];
 var getMax = function(arr) {
   var copyArr = JSON.parse(JSON.stringify(arr));
 var len = copyArr.length;
     copyArr.sort();
    return copyArr[len - 1];
 };
 getMax(arr); // 79

笨方法
#看到現在,你一定驚嘆js的強大,但有時過於依賴它的這種「奇技淫巧」會讓自己處於一種「自大」的狀態,畢竟js的強大不代表你自己的編碼水平強大。所以返璞歸真吧,用笨方法鍛鍊下自己的腦力:

 var arr = [22, 79, 33];
  var getMax = function(arr) {
     var len = arr.length,
         max = arr[0]; 
     while (len--) {
         if (max >= arr[len]) {
            continue;
         }
       max = arr[len];
    } 
    return max;
 };
 getMax(arr); // 79

 

以上是js求數組的最大值,巧方法與笨方法你用什麼方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn