1. 程式人生 > >回調函數,用戶定義的排序規則

回調函數,用戶定義的排序規則

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>

回調函數,用戶定義的排序規則