1.輸入10個成績,求總分,最高分,最低分
<script type="text/javascript"> var arr = new Array(80,70,86,58,90,35,89,67,50,99); var sum = 0; var maxd = 0; var mind = 100; for(var i=0;i<arr.length;i++){ sum = sum +arr[i]; if(arr[i]>maxd){ maxd = arr[i]; } if(arr[i]<mind){ mind = arr[i]; } } alert(sum); alert(maxd); alert(mind); </script>
這個題的解題思路就是先設定好一個最大值和最小值,然后讓我們的變量arr[i]分別和最大值、最小值作比較,然乎通過轉換賦值的形式來得到我們想要得到的最大和最小值
2.往數組里面添加數據的時候去重
方法一(比較笨重,但是粗俗易懂):
<script type="text/javascript"> var a = prompt("請輸入一個數字:"); var arr = new Array(1,2,3,4,5); var z = 0; for(var i=0;i<arr.length;i++){ if(a == arr[i]){ z = 1; break; } } if(z==0){ arr.push(a); }else{ alert("該數據在數組里面已存在!"); } </script>
當輸入9的時候沒有彈出提示框,說明9已經添加進這個數組中
方法二.運用 var.indexof()
<script type="text/javascript"> var a = parseInt(prompt("請輸入一個數字:"));---------------------在這里一定要注意,要把字符串轉換成整數 var arr = new Array(1,2,3,4,5); alert(arr.indexOf(a)); //判斷數據是否在數組里面存在,如果要檢索的字符串值沒有出現,則該方法返回 -1;另外indexOf() 方法對大小寫敏感!Of的O為大寫! </script>
在對話框輸入一個值(這個值在數組中),那么指示框彈出的的是這個值的索引
在對話框輸入一個值(這個值不在數組中),那么指示框彈出的的是這個值的索引就為-1
3.冒泡排序(比如從大到小排序)【*要重點學習一下】
我們拿個表格先來分析一下這個數組:
<script type="text/javascript"> var arr = new Array(70,34,60,49,20,59,98,100); var zj = 0;//中間變量 //第一次for用來控制比較的輪數,i代表輪次 for(var i=1;i<arr.length;i++){ //控制每輪比較幾次的 for(var j=0;j<arr.length-i;j++){ if(arr[j]<arr[j+1]){ //實現交換 zj = arr[j]; arr[j]=arr[j+1]; arr[j+1]=zj; } } } alert(arr[0]); </script>
驗證一下其他數據是否正確
<script type="text/javascript"> var arr = new Array(70,34,60,49,20,59,98,100); var zj = 0; for(var i=1;i<arr.length;i++){ for(var j=0;j<arr.length-i;j++){ if(arr[j]<arr[j+1]){ zj = arr[j]; arr[j]=arr[j+1]; arr[j+1]=zj; } } } alert(arr[2]); </script>
4.在數組里面查找數據,找到數據所在位置的索引
方法一:
<script type="text/javascript"> var arr = new Array(1,2,3,4,5,6,7,8,9,10); var a = 6; alert(arr.indexOf(a)); </script>
方法二:
<script type="text/javascript"> var arr = new Array(1,2,3,4,5,6,7,8,9,10); var a = 6; for(var i=0;i<arr.length;i++){ if(a==arr[i]){ alert(i); } } </script>
方法三:二分法查找數據(數據是海量的話,我們得學會用能用二分法),但是要求數組必須是排好序的
<script type="text/javascript"> var arr = new Array(1,2,3,4,5,6,7,8,9,10); var a = 6; var minx = 0; var maxx = arr.length-1; while(true){ var zjx = parseInt((minx+maxx)/2); if(zjx==minx){ if(a==arr[zjx+1]){ alert(zjx+1); break; } } if(a==arr[zjx]){ alert(zjx); break; }else if(a>arr[zjx]){ minx = zjx; }else{ maxx = zjx; } } </script>
二分法原理:折半查找,每次看做把表分成兩半,因為已經排序,所以只需要和中間數比較就能確定是在哪一半,然后不斷分成兩半,直到匹配。可以運用二分法來完成海量數據的檢索。比如var arr=new Array (1,2,3,4,5,6,7,8,9);這組數組,最小的索引是0,最大的索引是8。把最大和最小索引取個平均值,索引是4,分成的2組數組就是0-4和5-8。看中間的索引,對應的元素是5,而目標值是6>5,索引0-4的數組就不需要考慮了,值考慮索引為5-8的數組。再取索引為5-8的平均值為6(取整數),數組的索引又分成了5-6和7-8。索引6對應的元素是7,目標值是6<7,所以索引7-8的數組就不需要考慮了。以此類推逐步減小目標值的范圍,找出目標值的索引。