JavaScript基礎總結(三)——陣列總結

RoseMe發表於2019-02-16

關於JavaScript中的陣列做出瞭如下總結:
1、陣列是用來儲存一組不同型別的資料的容器。可以使用建構函式的方法和字面量的方法來宣告函式;訪問陣列通過下標的方法來訪問;arr.length可以獲得陣列長度。
2、陣列棧方法包括:

unshift():在陣列頭部插入值,返回值為陣列長度
push():在陣列末尾插入值,返回值為陣列長度
shift():刪除陣列中第一個值,返回值為被刪除的值
pop():刪除陣列中最後一個值,返回值為被刪除的值

3、陣列轉字串:

join("轉換成字元的連線符,預設為逗號分開")

4、陣列排序:

reverse()數值反序(例如下:var arr=[1,2,3];
    document.write(arr.reverse());輸出值為:3,2,1)
sort()元素比較大小(比大小分兩種情況,例1如下:        
    var arr=[5,2,3];
    var arrs=arr.sort();
    document.write(arrs);輸出值為2,3,5;
    例2如下:
    var arr=[1,21,3,0];
    document.write(arr.sort());輸出值為0,1,21,3;
    例2的比較大小是按第一個元素來比較的,正確升序應該為0,1,3,21,程式碼如下:
    var arr=[1,21,3,0];
    document.write(arr.sort(function (x,y){
        return x-y;
    })); 輸入出值為:0,1,3,21;
    降序為:
    var arr=[1,21,3,0];
    document.write(arr.sort(function (x,y){
        return y-x;
    })); 輸出值為21,3,1,0;
    )
 所以sort在對陣列進行排序後,返回新陣列,sort裡可以接收一個匿名函式來對陣列進行升序與降序

5、splice:具有刪除、替換、插入功能

例如下:
    var arr=[1,2,3,5];
    //splice替換值,替換3
    var insertArr=arr.splice(2,1,"我是替換值");//返回被刪除的值
    document.write(arr+"<br />");//輸入結果為[1,2,我是替換值,5]
    //splice插入值,在3的後面插入值
    var replaceArr=arr.splice(3,0,"我是插入值");
    document.write(arr+"<br />");//[1,2,3,我是插入值,5 ]
    //splice刪除值
    var delArr=arr.splice(2); //返回被刪除的值
    document.write(arr+"<br />"); //[1,2]

6、arr.indexOf(必寫的要查詢的項,可選查詢的起點的位置索引) 從陣列的頭部開始檢測
arr.lastIndexOf(必寫的要查詢的項,可選查詢的起點的位置索引) 從陣列的尾部開始檢測
例:

    var arr=[1,2,3,5,2,1,3];
    //陣列頭部開始檢測元素2的位置
    var firstArr=arr.indexOf(2)
    console.log("陣列中從前往後數第一個元素2的下標為"+firstArr); //輸出值為1
    //陣列尾部開始檢測元素1的位置
    var lastArr=arr.lastIndexOf(1);
    console.log("陣列中從後向前數第一個元素1的下標為"+lastArr); //輸出值為5


7、常見的陣列面試題如下:
1)陣列去重

<!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
        </head>
        <body>
        <script type="text/javascript">
            var arr=[1,2,3,1],//原陣列
                newArr=[], //新陣列
                flag;
            for(var i=0;i<arr.length;i++){//迴圈原陣列
                flag=true;
                for(var j=0;j<newArr.length;j++){ //迴圈新陣列
                    if(newArr[j]==arr[i]){ //如果兩個陣列中有相同的數,flag為假
                        flag=false;
                    }
                };
                if(flag){ //如果flag為真
                    newArr.push(arr[i]);//將arr[i]插入到新陣列中
                }
            }
            document.write(newArr)
        </script>
        </body>
    </html>
 2)陣列求和
 <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
        </head>
        <body>
        <script type="text/javascript">
            //1.計算給定陣列 arr 中所有元素的總和
            var arr=[1,2,3];
            function arryAnd(){
                var sum=0;//和的初始值
                for(var i=0;i<arr.length;i++){
                    sum+=arr[i];//sum=sum+0+arr[i]依次類推
                }
                console.log(sum);
            }
            arryAnd();
        </script>
        </body>
    </html>
3)合併陣列
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
    <script type="text/javascript">
        //合併陣列 arr1 和陣列 arr2。不要直接修改陣列 arr,結果返回新的陣列
        var arr1=[1,2,3],
            arr2=[4,5,6],
            arr;
        function merge(){
            return arr1.concat(arr2)
        }
        console.log(merge());
        console.log(arr)
    </script>
    </body>
</html>

4)將陣列中某個數刪除,以0為例

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
    <script type="text/javascript">
        var arr=[0,2,3,0,5,0],//舊陣列
            newArr=[];
        for(var i=0;i<arr.length;i++){ //迴圈新陣列
            if(arr[i]==0) continue;
            newArr.push(arr[i]);
        }
        console.log(newArr);
    </script>
    </body>
</html>
5)switch星期的獲取
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
    <script type="text/javascript">
        //獲取星期的方法
        var week=new Date().getDay();
        console.log(week);//返回number,0-6
        switch(week){
            case 0:
            document.write("星期日");
            break;
            case 1:
            document.write("星期一");
            break;
            case 2:
            document.write("星期二");
            break;
            case 3:
            document.write("星期三");
            break;
            case 4:
            document.write("星期四");
            break;
            case 5:
            document.write("星期五");
            break;
            case 6:
            document.write("星期六");
            break;
            //或最後一天如下所示:
//            default:
//            document.write("星期六");
        }
    </script>
    </body>
</html>


相關文章