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

來源:互聯網
上載者:User
寫這篇文章的原因

我目前做的項目很少用到演算法,於是這方面的東西自然就有點兒生疏。最近的一次編碼中遇到了從數組中擷取最大值的需求,當時我不自覺的想到了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
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.