test.sort(compareFunc); // sort函數自定義排序,針對不規則,數字,字符串集合 // * 比較函數 // * @param {Object} param1 要比較的參數1 // * @param {Object} param2 要比較的參數2 // * @return {Number} 如果param1 > param2 返回 1 // * 如果param1 == param2 返回 0 // * 如果param1 < param2 返回 -1 // */ function compareFunc(param1,param2){ //如果兩個參數均為字符串類型 if(typeof param1 == "string" && typeof param2 == "string"){ return param1.localeCompare(param2); } //如果參數1為數字,參數2為字符串 if(typeof param1 == "number" && typeof param2 == "string"){ return -1; } //如果參數1為字符串,參數2為數字 if(typeof param1 == "string" && typeof param2 == "number"){ return 1; } //如果兩個參數均為數字 if(typeof param1 == "number" && typeof param2 == "number"){ if(param1 > param2) return 1; if(param1 == param2) return 0; if(param1 < param2) return -1; } } var testArray = ["北京","上海","大連","成都"]; // localeCompare()方法,針對字符串排序, 升序, 英文, 中文根據首字拼音 document.write(testArray.sort( function compareFunction(param1,param2){ return param1.localeCompare(param2); //output:北京,成都,大連,上海 } ));