日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

WEB前端第二十六課——js數(shù)組

 路人甲Java 2021-09-24

1.數(shù)組基礎(chǔ)

?、?nbsp;數(shù)組概念

  array是按照一定順序排列的一組值,每個(gè)值都擁有一個(gè)編號(hào),編號(hào)從0開始從左向右依次增加

  數(shù)組中的元素可以是任何類型的數(shù)據(jù),元素之間用逗號(hào)分隔,整個(gè)數(shù)組由方括號(hào)([…])包裹

?、?數(shù)組本質(zhì)

  本質(zhì)上,數(shù)組是對象類型的一種特殊表現(xiàn)形式,

  因此,可以使用 new方式創(chuàng)建數(shù)組

  示例:var namelist=new Array('Jim','John','Bater'); // ['Jim','John','Bater']

?、?nbsp;數(shù)組長度

  JavaScript中的數(shù)組元素可以是任何類型的數(shù)據(jù),而在計(jì)算機(jī)內(nèi)存中不同類型的數(shù)據(jù)是分區(qū)存儲(chǔ)的,因此,JavaScript中的數(shù)組元素在內(nèi)存中的存儲(chǔ)位置是不連續(xù)的

  無法按照內(nèi)存地址訪問數(shù)組元素,所以計(jì)算數(shù)組長度的時(shí)候只需要計(jì)算數(shù)組元素的個(gè)數(shù)即可,JavaScript通過使用下標(biāo)的方式對數(shù)組元素進(jìn)行標(biāo)記,數(shù)組的下標(biāo)則是連續(xù)的

  通過 .length屬性計(jì)算數(shù)組長度,語法:arr . length;

    length是可寫屬性,如果設(shè)置length長度小于數(shù)組本身長度,那么多余元素會(huì)被舍棄

               如果設(shè)置length長度大于數(shù)組本身長度,那么缺少元素用空位補(bǔ)齊

               如果設(shè)置length長度不是合法數(shù)值,那么會(huì)報(bào)錯(cuò)“invalid array length”

    示例:var arr=[a,b,c,d];

       arr.length=3;

       console.log(arr.length);  //3

       console.log(arr);  // [a,b,c]

       console.log(arr[4]);  // undefined

       arr.length=-1;

       console.log(arr.length);  //Uncaught RangeError: invalid array length(…)

?、?nbsp;數(shù)組遍歷

  可以使用 for in快速訪問數(shù)組中的每一個(gè)元素

  示例:var nameArr = ['John','Anna','Hauk'];

     for (var index in nameArr){

      console.log(nameArr[index]);

     }

     返回結(jié)果:John  Anna  Hauk

  for in循環(huán)遍歷數(shù)組的時(shí)候,index表示數(shù)組中元素的下標(biāo),是自定義變量

 ⑤ 數(shù)組空位

  當(dāng)數(shù)組某個(gè)位置是空元素,即兩個(gè)逗號(hào)之間沒有任何值,則該數(shù)組存在空位(hole)

  var arr = ['John','','Sami'],示例中間引號(hào)所代表的的元素不屬于空位,空位沒有任何值(表現(xiàn)為undefined),但空位占據(jù)數(shù)組length長度

?、?數(shù)組刪除

  delete命令可以刪除數(shù)組中元素的值,從而形成空位,但delete命令并不會(huì)影響 length的屬性

  delete命令在使用過程中,是根據(jù)數(shù)組的下標(biāo)來鎖定元素進(jìn)行刪除的

  語法:delete 變量名[下標(biāo)];

2.數(shù)組調(diào)用

  數(shù)組調(diào)用指的是數(shù)組元素的調(diào)用,通過 “數(shù)組名[下標(biāo)]” 的方式對數(shù)組元素進(jìn)行訪問

  數(shù)組元素每次只能訪問一個(gè),如果要調(diào)用多個(gè)元素,可以通過循環(huán)語句進(jìn)行連續(xù)調(diào)用

  示例:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Array</title>
    <style>
        input{
            outline: none;
        }
    </style>
</head>
<body>
    <span>名稱</span>
    <input type="text" id="nameInput">
    <button id="submitButton">提交</button>
<script>
    var nameInput=document.getElementById("nameInput");
    var submitButton=document.getElementById("submitButton");
    submitButton.onclick=function () {
        var nameStr=nameInput.value;
        var nameArr=nameStr.split(",");
        for (var i in nameArr){
            console.log(nameArr[i]);
        }
    }
</script>
</body>
</html>

3.數(shù)組方法

  ① isArray,判斷變量是否為數(shù)組

    如果是數(shù)組返回 true,否則返回 false,使用對象Array調(diào)用該方法

    語法:Array. isArray(變量名);

  ② valueOf(),返回?cái)?shù)組本身

    該方法歸屬于Object對象類型,作用是返回指定對象的原始值,在數(shù)組中的作用是返回?cái)?shù)組本身 (很少使用)

    語法:數(shù)組名 .valueOf();

    JavaScript中許多內(nèi)置對象都重寫了該函數(shù),以便更適合自身的功能需要,因此,不同類型對象的 valueOf方法的返回值和返回值類型均有可能不同

 ?、?nbsp;toString(),將數(shù)組以字串的形式返回

    不僅能夠?qū)?shù)組轉(zhuǎn)換成字符串,布爾值也可以轉(zhuǎn)換,返回值之間默認(rèn)逗號(hào)分隔

    語法:數(shù)組名.toString();

 ?、?nbsp;push,向數(shù)組末尾追加數(shù)據(jù),返回當(dāng)前數(shù)組的長度

    可以向數(shù)組末尾添加一個(gè)或多個(gè)元素,返回值為追加元素后數(shù)組的長度length

    語法:數(shù)組名 .push('item1', 'item2',…);

    ★ push方法會(huì)改變原數(shù)組內(nèi)容

 ?、?nbsp;pop,刪除數(shù)組最后一個(gè)元素

    返回值為刪除的這個(gè)元素

    語法:數(shù)組名 .pop();

    ★ pop方法會(huì)改變原數(shù)組內(nèi)容

  ⑥ join,將數(shù)組轉(zhuǎn)換為字符串,默認(rèn)用逗號(hào)隔開

    以給定的參數(shù)做為分隔符,將數(shù)組轉(zhuǎn)換為字符串,如果不設(shè)置參數(shù),則默認(rèn)使用逗號(hào)分隔

    語法:數(shù)組名 .join(' 分隔符 ');

  ⑦ shift(),刪除數(shù)組的第一個(gè)元素

    返回值未刪除的這個(gè)元素

    語法:數(shù)組名 .shift();

    ★ shift方法也會(huì)對原數(shù)組造成影響

 ?、?nbsp;unshift(),向數(shù)組前端添加元素

    可以向數(shù)組最前端添加一個(gè)或多個(gè)元素,返回值為添加元素后數(shù)組的長度length

    語法:數(shù)組名 .unshift('item1','item2',…);

    ★ unshift方法也會(huì)對原數(shù)組造成影響

  ⑨ reverse,數(shù)組反轉(zhuǎn)

    將數(shù)組中元素的順序反向排列

    語法:數(shù)組名 .reverse(); //括號(hào)內(nèi)不需要任何參數(shù)

    ★ reverse方法也會(huì)改變原數(shù)組的結(jié)構(gòu)

  ⑩ slice,數(shù)組截取

    slice方法能夠根據(jù)指定的開始和結(jié)束下標(biāo),對數(shù)組進(jìn)行截取,并生成一個(gè)新的數(shù)組

    新數(shù)組的內(nèi)容包括開始下標(biāo)對應(yīng)的元素到結(jié)束下標(biāo)對應(yīng)的前一個(gè)元素,即不包含結(jié)束下標(biāo)所對應(yīng)的元素本身 ★

    語法:數(shù)組名 .slice(index1,index2);   //返回值未生成的數(shù)組

    slice方法的參數(shù)可以是負(fù)數(shù),-1代表最后一個(gè)元素,-2代表倒數(shù)第二個(gè)元素,以此類推

    如果只寫一個(gè)參數(shù),則表示對從當(dāng)前下標(biāo)對應(yīng)的元素一直到最后一個(gè)元素進(jìn)行截取

    該方法不更改原數(shù)組!

  ? splice,數(shù)組截取,并且可以插入新的元素(改變原數(shù)組)

    splice方法是根據(jù)指定的下標(biāo)和長度數(shù),對數(shù)組進(jìn)行一定長度的截取,同時(shí)可以根據(jù)增加參數(shù)向數(shù)組中插入一些新元素

    返回值為截取元素所構(gòu)成的數(shù)組

    語法:數(shù)組名 .splice(index, removeCount, addItem1, addItem2,…);

    ★ splice方法會(huì)改變原數(shù)組的內(nèi)容

    方法中插入新元素的參數(shù)不是必須設(shè)置,前兩個(gè)參數(shù)為必須

  ? sort,數(shù)組排序

    語法:數(shù)組名 .sort(sortby);

    排序順序可以按編碼或數(shù)字,并按升序或降序

    默認(rèn)按照數(shù)組中元素的編碼進(jìn)行排序,此時(shí)括號(hào)內(nèi)不需要設(shè)置參數(shù)

    也可以設(shè)置sortby函數(shù)定義按數(shù)字排序,參數(shù)sortby必須是函數(shù),通過函數(shù)指定升序或降序

    ★ sort方法會(huì)改變原數(shù)組的內(nèi)容

  ? indexOf,對數(shù)組進(jìn)行索引

    在數(shù)組中從前向后檢索指定元素,返回值為元素在數(shù)組中第一次出現(xiàn)的下標(biāo),如果沒有檢索到則返回 -1

    indexOf方法的第二個(gè)參數(shù)表示從第幾個(gè)元素開始檢索,是可選參數(shù)

    語法:數(shù)組名 .indexOf(item, beginIndex);

    第二個(gè)參數(shù)可以設(shè)置負(fù)數(shù),-1表示從最后一個(gè)(倒數(shù)第一個(gè))元素開始向后查找

  ? lastIndexOf,反序索引

     在數(shù)組中從后向前檢索指定元素,返回值為元素在數(shù)組中最后一次出現(xiàn)的下標(biāo),如果沒有檢索到則返回-1

    lastIndexOf方法的第二個(gè)參數(shù)表示從第幾個(gè)元素開始檢索,是可選參數(shù)

    語法:數(shù)組名 .lastIndexOf(item, beginIndex);

    第二個(gè)參數(shù)可以為負(fù)數(shù),-1表示從最后一個(gè)元素開始向前查找

  ? concat,用于連接兩個(gè)或多個(gè)數(shù)組

    語法:array1 .concat(array2,array3,...);

    ★ 該方法不會(huì)改變原數(shù)組,而僅僅返回連接數(shù)組的一個(gè)副本(新數(shù)組)

<script>
    var arrOne=[100,200,300,400];
    var arrTwo=[500,600,700,800];
    var arrTogether=arrOne.concat(arrTwo);
    arrTogether.push(10);
    arrTogether.unshift(1);
    console.log(arrTogether);
</script>

4.二維數(shù)組

  如果數(shù)組的元素還是數(shù)組,那么外層數(shù)組就稱為二維數(shù)組

  語法:var arr=[[array1], [array2], [array3]];

  二維數(shù)組有兩個(gè)下標(biāo),第一個(gè)下標(biāo)表示外層數(shù)組的下標(biāo),第二個(gè)下標(biāo)表示內(nèi)層數(shù)組的下標(biāo),如 arr[1][0];

  二維數(shù)組是數(shù)組的一種特殊形式,數(shù)組的方法對二維數(shù)組任然生效

5.push、unshift練習(xí)

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Array</title>
</head>
<body>

<script>
    var arrOne=[100,200,300,400];
    var arrTwo=[500,600,700,800];
    for (var i in arrTwo){
        arrOne.push(arrTwo[i]);
    }
    arrOne.push(10);
    arrOne.unshift(1);
    console.log(arrOne);
</script>
</body>
</html>

6.push、pop練習(xí)

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Array_push&pop</title>
    <style>
        input{
            outline: none;
        }
    </style>
</head>
<body>
    <span>倉庫</span>
    <input type="text" id="storage">
    <button id="putIn">入庫</button>
    <button id="takeOut">出庫</button>
<script>
    var storage=document.getElementById("storage");
    var goods=[];
    storage.value=goods.length;
    var putIn=document.getElementById("putIn")
    putIn.onclick=function () {
        if (storage.value==5){
            alert("倉庫已滿!");
        }else{
            goods.push('貨物');
            storage.value=goods.length;
        }
    }
    var takeOut=document.getElementById("takeOut");
    takeOut.onclick=function () {
        if (storage.value==0){
            alert('倉庫已空!');
        }else{
            goods.pop();
            storage.value=goods.length;
        }
    }
</script>
</body>
</html>

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多