用 prompt 输入字符串,创建数组,找出数组中最大值,问题阐述与解决。

用 prompt 输入字符串创建数组。用三种方法找出数组中最大值。问题阐述与解决。

实现目标:输入一组数,并找出这组数中最大的值。

采用的方法:

  1. 双 for循环,列出从小到大(从大到小)顺序。
  2. 单 for 循环,一遍循环找出最大值。
  3. 使用 Math.max。

来看看代码


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>排序title>
head>
<body>
<script>
    var str=prompt("判断一组数据的大小。
请输入一组数,用‘-’分隔"
,); 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("
从小到大排序:"
+arr,"
方法一最大值为:"
+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("
方法二最大值为:"
+temp1); //方法三 var max_arr=Math.max.apply(null,arr); //Math.max(param1,param2) 因为参数不支持数组。 //所以可以根据apply的特点来解决, //在调用apply的时候第一个参数给了一个null,这个是因为没有对象去调用这个方法, // 我们只需要用这个方法帮我们运算,得到返回的结果就行,所以就直接传递了一个null过去。 document.write("
方法三最大值为:"
+max_arr);
script> body> html>

结果如下:
用 prompt 输入字符串,创建数组,找出数组中最大值,问题阐述与解决。_第1张图片

方法一、二的结果明显不对A !!!

分析:应该是数组中元素的类型还是String 型,接下来类型转换!将数组中所有元素转换为 Int 型试试。


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>排序title>
head>
<body>
<script>
    var str=prompt("判断一组数据的大小。
请输入一组数,用‘-’分隔"
,);//输入 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("
输入的一组数转换为 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("
从小到大排序:"
+arr_int,"
方法一最大值为:"
+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("
方法二最大值为:"
+temp1); //方法三 var max_arr=Math.max.apply(null,arr); //Math.max(param1,param2) 因为参数不支持数组。 //所以可以根据apply的特点来解决, //在调用apply的时候第一个参数给了一个null,这个是因为没有对象去调用这个方法, // 我们只需要用这个方法帮我们运算,得到返回的结果就行,所以就直接传递了一个null过去。 document.write("
方法三最大值为:"
+max_arr);
script> body> html>

转换类型之后,结果如下:
用 prompt 输入字符串,创建数组,找出数组中最大值,问题阐述与解决。_第2张图片

转换完之后结果正确。
转换为浮点型也是一样的,转换为浮点型更符合题意。只需将parseInt改为 parseFloat就 ok 了~~

你可能感兴趣的:(没事瞎研究)