用 prompt 輸入字串,建立陣列,找出陣列中最大值,問題闡述與解決。
阿新 • • 發佈:2018-11-05
用 prompt 輸入字串建立陣列。用三種方法找出陣列中最大值。問題闡述與解決。
實現目標:輸入一組數,並找出這組數中最大的值。
採用的方法:
- 雙 for迴圈,列出從小到大(從大到小)順序。
- 單 for 迴圈,一遍迴圈找出最大值。
- 使用 Math.max。
來看看程式碼
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>排序</title>
</head>
<body>
<script>
var str=prompt("判斷一組資料的大小。<br>請輸入一組數,用‘-’分隔",);
var arr=str.split("-");
document.write("輸入的一組數為:"+arr);
//方法一
for (var i=0;i<arr.length;i++) {
for (var j=0;j<arr.length;j++){
if (arr[j]>arr[i]){
temp=arr[ i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
document.write("<br>從小到大排序:"+arr,"<br>方法一最大值為:"+arr[arr.length-1]);
//方法二
var temp1=arr[0];
for (var i=0;i<arr.length;i++) {
if (temp1 < arr[i]) {
temp1=arr[ i];
}
else {
}
}
document.write("<br>方法二最大值為:"+temp1);
//方法三
var max_arr=Math.max.apply(null,arr);
//Math.max(param1,param2) 因為引數不支援陣列。
//所以可以根據apply的特點來解決,
//在呼叫apply的時候第一個引數給了一個null,這個是因為沒有物件去呼叫這個方法,
// 我們只需要用這個方法幫我們運算,得到返回的結果就行,所以就直接傳遞了一個null過去。
document.write("<br>方法三最大值為:"+max_arr);
</script>
</body>
</html>
結果如下:
方法一、二的結果明顯不對A !!!
分析:應該是陣列中元素的型別還是String 型,接下來型別轉換!將陣列中所有元素轉換為 Int 型試試。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>排序</title>
</head>
<body>
<script>
var str=prompt("判斷一組資料的大小。<br>請輸入一組數,用‘-’分隔",);//輸入
var arr=str.split("-");//將輸入的字串分隔成陣列,實際上每個陣列單元仍是字串型別
document.write("輸入的一組數為:"+arr);
//將陣列中所有元素轉換為 Int 型
var arr_int=new Array();
for (var i = 0; i < arr.length; i++) {
arr_int[i] =parseInt(arr[i]);
}
document.write("<br>輸入的一組數轉換為 Int 型為:"+arr_int);
//方法一
for (var i=0;i<arr_int.length;i++) {
for (var j=0;j<arr_int.length;j++){
if (arr_int[j]>arr_int[i]){
var temp=arr_int[i];
arr_int[i]=arr_int[j];
arr_int[j]=temp;
}
}
}
document.write("<br>從小到大排序:"+arr_int,"<br>方法一最大值為:"+arr_int[arr_int.length-1]);
//方法二
var temp1=arr_int[0];
for (var i=0;i<arr_int.length;i++) {
if (temp1 < arr_int[i]) {
temp1=arr_int[i];
}
else {
}
}
document.write("<br>方法二最大值為:"+temp1);
//方法三
var max_arr=Math.max.apply(null,arr);
//Math.max(param1,param2) 因為引數不支援陣列。
//所以可以根據apply的特點來解決,
//在呼叫apply的時候第一個引數給了一個null,這個是因為沒有物件去呼叫這個方法,
// 我們只需要用這個方法幫我們運算,得到返回的結果就行,所以就直接傳遞了一個null過去。
document.write("<br>方法三最大值為:"+max_arr);
</script>
</body>
</html>
轉換型別之後,結果如下:
轉換完之後結果正確。
轉換為浮點型也是一樣的,轉換為浮點型更符合題意。只需將parseInt改為 parseFloat就 ok 了~~