JS數組練習


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM