1. 程式人生 > >JaveScript數組(JS知識點歸納五)

JaveScript數組(JS知識點歸納五)

下標 true call [ ] 基本 使用 ons 人的 and

1.概念

    a)作用--用於保存多個數據,便於對數據的使用
    b)數組元素--數組中的數據
    c)索引--數組中的元素按照下標(數值)的方式排列(從0 開始),依次遞增(也有可能是字符串的類型--不用)
    d)長度--數組中的元素個數--length

? 2.創建方式

    a)構造函數創建方式 var arr = new Array (1,2,3);
    b)字面量方式創建  var arr = [1,2,3];
    c)獲取指定元素   arr[index]  
    d)設置元素   arr[index]=要設置的值

? 3.length

    a)與index的關系-index= length-1
    b)length  > 元素個數   沒有意義 --會產生誤導
    c)length  < 元素個數   後面多出的元素會被刪除
    d)清空數組  arr.length-0;--修改數組的元素值
                arr=[];--更換為新的數組

? 4.數組遍歷

    a)使用for循環
    b)反向遍歷 for(var=  arr.length-1; i >=0;i-- ){ 從後往前取值  };

    練習:
        1)將0-99之間的數放入到數組中
            var arr=[];
            for (var i = 0 ; i <100,i++){
                arr[i]=i;
            }
            console.log(arr);

        2)將1-100所有數放入到數組中
            var arr= [ ];
            
for (var i = 0 ; i<=100;i++){ arr[i-1]=i;//索引默認從0 開始,-1就是第一個索引是1 arr[arr.length]=i; } console.log(arr)

        3)將1-100之間的所有偶數放入到數組中
          var arr = [ ];
            for (var i = 1 ; i <=100 ; i++){
                if (i%2===0){
                    arr[arr.length]
=i; } } console.log(arr);

        4)求一組數中的最大值和最小值,以及所在位置(索引值)
                 var arr= [ 1,5,4,33,6,67,999];
                var max=arr[0];//聲明變量
                var min =arr[0];
                var maxIndex=0;//聲明索引值
                var minIndex=0;
                    for (var i = 0 ; i <arr.length;i++){
                        if (max<arr[i]){
                        max = arr[i];
                            maxIndex=i;//索引值=i
                        }
                        if (min>arr[i]){
                            min=arr[i];
                            minIndex=i;
                        }
                    }
                console.log(max, maxIndex);
                console.log(min, minIndex);

        5)將字符串數組用|或其他符號分割
              var arr = ["abc","asd","asdqwe"];
                var str =[];
                var fuhao="-";
                for (var i = 0 ; i < arr.length;i++){
                    str=str+fuhao+arr[i];
                }
                console.log(str);

5.翻轉數組

     a)反向遍歷
        var arr=["a","b","c"];
        var resultArr=[];
        for (var i = arr.length-1;i>=0;i++){
            resultArr[resultARR.length]=arr[i];
        }
        console.log(arr);

    b)直接在原有數組的基礎上進行翻轉
         var arr=["a","b","c"];
         var temp;
         for (var i = 0 ; i<parseInt(arr.length/2-1);i++){
             temp=arr[i];
             arr[i]=arr[arr.length-1-i];
             arr[arr.length-1-i]=temp;
         }
         console.log(arr);

? 6.冒泡排序

	 a)基本的冒泡排序
           var arr = [1,2,6,4,9,2];
            var j,temp;
            for(var i = 0 ; i < arr.length-1;i++){
                for (j = 0 ; j <arr.length -i -1;j++){
                    if (arr[j]>arr[j+1]){
                        temp = arr[j];
                        arr[j]=arr[j+1];
                        arr[j+1]=temp;
                    }
                }
            }
            console.log(arr);

    b)冒泡排序的優化---假設成立
        1)找到不確定的點,設置假設條件
        2)找到可以讓假設失敗的條件,設置flag=false
        3)驗證flag的結果
            var arr = [1,2,6,4,9,2];
            var j,temp,flag;
            for(var i = 0 ; i < arr.length-1;i++){
                //假設是真
                flag=true;
                for (j = 0 ; j <arr.length -i -1;j++){  
                    if (arr[j]>arr[j+1]){
                        temp = arr[j];
                        arr[j]=arr[j+1];
                        arr[j+1]=temp;
                        //假設不成立
                        flag =false;
                    }
                }
                //是真--成立--跳出
                if (true){
                    break;
                }
            }
            console.log(arr);


? 7.數組去重

        a)假設成立法
            var arr = [1,2,6,4,9,2];
            var j,temp,flag;
            for(var i = 0 ; i < arr.length-1;i++){
                //假設是真
                flag=true;
                for (j = 0 ; j <arr.length -i -1;j++){  
                    if (arr[j]>arr[j+1]){
                        temp = arr[j];
                        arr[j]=arr[j+1];
                        arr[j+1]=temp;
                        //假設不成立
                        flag =false;
                    }
                }
                //是真--成立--跳出
                if (true){
                    break;
                }
            }
            console.log(arr);


b)計數法
         var arr= [1,1,1,12,2,2,234,346,5,6,78,0];
        var resultArr=[];
        resultArr[0]=arr[0];
        var j ,count;//設置計數
        for(var i = 0 ; i <arr.length;i++){
            count=0;//針對arr[i]設置新的計數
            for(j = 0 ; j <resultArr.length;j++){
                if(resultArr[j]===arr[i]){//相等不執行
                    count++;
                    break;
                }
            }
            if(count===0){檢測count的值
                resultArr[resultArr.length]=arr[i];
            }
        }
        console.log(resultArr);


c)循環特性--利用循環特性
//數組去重:有一個數據重復的數組,我們需要通過處理,得到一個不重復的數組
         var arr = [1, 1, 2, 3, 3, 2, 4, 5, 5, 4, 3, 2, 1];
        //1 創建一個結果數組
        //結果數組一定不能重復
        var resultArr = [];
        resultArr[0] = arr[0];
        var j;
        //利用循環特性的解題方式實際上通過判斷循環變量和數組長度之間的關系,去檢測循環的結束方式
        for (var i = 1; i < arr.length; i++) {
        for (j = 0; j < resultArr.length; j++) {
            if (arr[i] === resultArr[j]) {
            //如果找到相等的項,執行break;
            break;
            }
        }
        //在內循環結束後,檢測j和resultArr.length的關系
        if (j === resultArr.length) {
            //說明循環正常結束,說明沒有執行過跳出,意味著沒有找到相等的元素,進行放入操作
            resultArr[resultArr.length] = arr[i];
        }
        }
        console.log(resultArr);

? 8.數組的類型檢測--復雜數據類型

     a)Array.isArray([1,2,3]); 返回值--布爾  數組==true  IE9以下不支持
    b)[1, 2, 3] instanceof Array
    c)Object.prototype.toString.call([1,2,3]);

? 9.簡單數據類型與復雜數據類型的區別

    a)保存數據個數上不同
        簡單--一個值
        復雜--多個值
    b)在內存中的保存方式
        簡單--具體值--值類型--保存於棧中
        復雜--具體值的指向(箭頭)--引用類型--保存於堆總(初學者)
    c)進行復制操作是,結果不同
        簡單--復制前後無關聯  復制粘貼
        復制--復雜前後的結果是一樣的  設立快捷方式

? 10.二維數組--數組中還有數組

    var arr = [1,2,3,[4,5,6]];
    遍歷:
       var j ,temp;
        for (var i = 0 ; i <arr.length ; i ++){
            temp = arr[i];//進行保存,方便下次使用
            if (temp instanceof Array){//檢測是否是數組
                for ( j = 0 ; j <temp.length ; j ++){
                    console.log(temp[j]);//是數組,打印出來
                }
            }else{
                console.log(temp);不是數組,直接打印
            }
        }

對於,數組的大概也就是這麽多.

從寫博的這段時間,越來越糾結,每一句話都要去想好久,自己寫的對不對,大家看的是否可以理解,我歸納的是否有遺漏等..

但是,這段時間卻是成長了很多.我會慢慢地去完善,改善自己的.

PS:2018-01-20,這天,我在北京798熊貓慢遞,寫了一封給某某人的信,我希望這封信永遠不會被寄出,這個人永遠不會看到信..安可

JaveScript數組(JS知識點歸納五)