回調函數,用戶定義的排序規則
阿新 • • 發佈:2017-08-13
1.0 www. script span round lan new ans 開始
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>範例6-3</title> </head> <body> <script language="javascript"> function SortNumber( obj, func )// 定義通用排序函數 { // 參數驗證,如果第一個參數不是數組或第二個參數不是函數則拋出異常 if( !(obj instanceof Array) || !(func instanceof Function)) { var e = new Error(); // 生成錯誤信息 e.number = 100000; // 定義錯誤號 e.message = "參數無效"; // 錯誤描述throw e; // 拋出異常 } for( n in obj ) // 開始排序 { for( m in obj ) { if( func( obj[n], obj[m] ) ) // 使用回調函數排序,規則由用戶設定 {var tmp = obj[n]; obj[n] = obj[m]; obj[m] = tmp; } } } return obj; // 返回排序後的數組 } function greatThan( arg1, arg2 ) // 回調函數,用戶定義的排序規則 { return arg1 > arg2; // 規則:從大到小 } try { var numAry = new Array( 5,8,6,32,1,45,7,25 ); // 生成一數組 document.write("<li>排序前:"+numAry); // 輸出排序前的數據 SortNumber( numAry, greatThan ) // 調用排序函數 document.write("<li>排序後:"+numAry); // 輸出排序後的數組 } catch(e) { alert( e.number+":"+e.message ); // 異常處理 } </script> </body> </html>
回調函數,用戶定義的排序規則