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的數組就不需要考慮了。以此類推逐步減小目標值的范圍,找出目標值的索引。
