2008-03-19

【程式】JS : 將陣列利用 sort 方式進行亂數排列

當想要每次呈現的資料都讓別人感覺不一樣時,可以利用sort將陣列打亂,
這樣顯示的資料順序就會變了,感覺好像是不同的資料。

var a = new Array("a", "b", "c", "d", "e");
function shuffle(a,b) {
  var num = Math.random() > 0.5 ? -1:1;
  return num;
}
var b = a.sort(shuffle);
alert(b);

單獨使用sort,那就只是排序而以。

UPDATE:2008-11-06 發現一個更詳細的內容


JavaScript中實現數組的排序、亂序和搜索

作者:Hily 原始鏈接:http://hily.me/blog/2005/09/javascript-sort-shuffle-search/
版權聲明:可以轉載,轉載時務必以超鏈接形式標題文章原始出處作者信息版權聲明

所有這些功能,用一個sort()就可以完成了。

1. 排序:
默認的sort()按字符編碼排序的:

現在要讓它按照數值大小排序:

只要傳遞一個比較函數給sort就可以了,如果比較函數的值小於0,則表示a必須出現在b前面,否則在b後面。

2. 亂序:
讓比較函數隨機傳回-1或1就可以了:

3. 搜索:
用sort()來玩搜索還蠻新鮮的,呵呵,看看是怎麼玩的吧。
我現在要把數組裡含有字母'a'的元素全部找出來,如果沒有sort(),似乎只能用遍歷了,遍歷的效率…那個叫恐怖啊!!具體做法如下:

這樣就把數組中含有字母'a'的元素全部放到數組前面啦,再經過一些簡單的處理,就可以輸出搜索結果了。

0 comments:

張貼留言