偶然間發(fā)現(xiàn)了一個數(shù)組隨機(jī)排序的方法俯抖,以前都要寫一堆代碼输瓜,發(fā)現(xiàn)這個以后原來如此簡單。
var arr = [1,2,3,4,5]; console.log(arr.sort(function(){return Math.random()-0.5;})); //結(jié)果:[4, 2, 1, 5, 3];
這個主要思路就是sort是根據(jù)后面的參數(shù)的正負(fù)來排序蚌成,我們?nèi)€隨機(jī)數(shù)0~1前痘,這個以0.5為分界線(這個不難理解吧,如果理解不了去回爐中小學(xué)數(shù)學(xué))担忧。
sort方法說明:如果調(diào)用該方法時(shí)沒有使用參數(shù)芹缔,將按字母順序?qū)?shù)組中的元素進(jìn)行排序,說得更精確點(diǎn)瓶盛,是按照字符編碼的順序進(jìn)行排序最欠。要實(shí)現(xiàn)這一點(diǎn),首先應(yīng)把數(shù)組的元素都轉(zhuǎn)換成字符串(如有必要)惩猫,以便進(jìn)行比較芝硬。
如果想按照其他標(biāo)準(zhǔn)進(jìn)行排序,就需要提供比較函數(shù)轧房,該函數(shù)要比較兩個值拌阴,然后返回一個用于說明這兩個值的相對順序的數(shù)字。比較函數(shù)應(yīng)該具有兩個參數(shù) a 和 b奶镶,其返回值如下:
- 若 a 小于 b迟赃,在排序后的數(shù)組中 a 應(yīng)該出現(xiàn)在 b 之前,則返回一個小于 0 的值厂镇。
- 若 a 等于 b纤壁,則返回 0。
- 若 a 大于 b捺信,則返回一個大于 0 的值酌媒。
程序員真的是需要多思考的,所有的程序員都能解決問題,但是如何更簡潔有效的解決問題秒咨,才是我們該做的事情