非常簡(jiǎn)單的js數(shù)組隨機(jī)排序方法

偶然間發(fā)現(xiàn)了一個(gè)數(shù)組隨機(jī)排序的方法,以前都要寫(xiě)一堆代碼,發(fā)現(xiàn)這個(gè)以后原來(lái)如此簡(jiǎn)單。

var arr = [1,2,3,4,5]; console.log(arr.sort(function(){return Math.random()-0.5;})); //結(jié)果:[4, 2, 1, 5, 3];

這個(gè)主要思路就是sort是根據(jù)后面的參數(shù)的正負(fù)來(lái)排序,我們?nèi)€(gè)隨機(jī)數(shù)0~1,這個(gè)以0.5為分界線(xiàn)(這個(gè)不難理解吧,如果理解不了去回爐中小學(xué)數(shù)學(xué))。

sort方法說(shuō)明:如果調(diào)用該方法時(shí)沒(méi)有使用參數(shù),將按字母順序?qū)?shù)組中的元素進(jìn)行排序,說(shuō)得更精確點(diǎn),是按照字符編碼的順序進(jìn)行排序。要實(shí)現(xiàn)這一點(diǎn),首先應(yīng)把數(shù)組的元素都轉(zhuǎn)換成字符串(如有必要),以便進(jìn)行比較。
如果想按照其他標(biāo)準(zhǔn)進(jìn)行排序,就需要提供比較函數(shù),該函數(shù)要比較兩個(gè)值,然后返回一個(gè)用于說(shuō)明這兩個(gè)值的相對(duì)順序的數(shù)字。比較函數(shù)應(yīng)該具有兩個(gè)參數(shù) a 和 b,其返回值如下:

  • 若 a 小于 b,在排序后的數(shù)組中 a 應(yīng)該出現(xiàn)在 b 之前,則返回一個(gè)小于 0 的值。
  • 若 a 等于 b,則返回 0。
  • 若 a 大于 b,則返回一個(gè)大于 0 的值。

程序員真的是需要多思考的,所有的程序員都能解決問(wèn)題,但是如何更簡(jiǎn)潔有效的解決問(wèn)題,才是我們?cè)撟龅氖虑?/p>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容