主頁 > 企業開發 > WEB前端第二十六課——js陣列

WEB前端第二十六課——js陣列

2020-09-10 14:07:30 企業開發

1.陣列基礎

 ① 陣列概念

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

  陣列中的元素可以是任何型別的資料,元素之間用逗號分隔,整個陣列由方括號([…])包裹

 ② 陣列本質

  本質上,陣列是物件型別的一種特殊表現形式,

  因此,可以使用 new方式創建陣列

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

 ③ 陣列長度

  JavaScript中的陣列元素可以是任何型別的資料,而在計算機記憶體中不同型別的資料是磁區存盤的,因此,JavaScript中的陣列元素在記憶體中的存盤位置是不連續的

  無法按照記憶體地址訪問陣列元素,所以計算陣列長度的時候只需要計算陣列元素的個數即可,JavaScript通過使用下標的方式對陣列元素進行標記,陣列的下標則是連續的

  通過 .length屬性計算陣列長度,語法:arr . length;

    length是可寫屬性,如果設定length長度小于陣列本身長度,那么多余元素會被舍棄

               如果設定length長度大于陣列本身長度,那么缺少元素用空位補齊

               如果設定length長度不是合法數值,那么會報錯“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(…)

 ④ 陣列遍歷

  可以使用 for in快速訪問陣列中的每一個元素

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

     for (var index in nameArr){

      console.log(nameArr[index]);

     }

     回傳結果:John  Anna  Hauk

  for in回圈遍歷陣列的時候,index表示陣列中元素的下標,是自定義變數

 ⑤ 陣列空位

  當陣列某個位置是空元素,即兩個逗號之間沒有任何值,則該陣列存在空位(hole)

  var arr = ['John','','Sami'],示例中間引號所代表的的元素不屬于空位,空位沒有任何值(表現為undefined),但空位占據陣列length長度

 ⑥ 陣列洗掉

  delete命令可以洗掉陣列中元素的值,從而形成空位,但delete命令并不會影響 length的屬性

  delete命令在使用程序中,是根據陣列的下標來鎖定元素進行洗掉的

  語法:delete 變數名[下標];

2.陣列呼叫

  陣列呼叫指的是陣列元素的呼叫,通過 “陣列名[下標]” 的方式對陣列元素進行訪問

  陣列元素每次只能訪問一個,如果要呼叫多個元素,可以通過回圈陳述句進行連續呼叫

  示例:

<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.陣列方法

  ① isArray,判斷變數是否為陣列

    如果是陣列回傳 true,否則回傳 false,使用物件Array呼叫該方法

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

  ② valueOf(),回傳陣列本身

    該方法歸屬于Object物件型別,作用是回傳指定物件的原始值,在陣列中的作用是回傳陣列本身 (很少使用)

    語法:陣列名 .valueOf();

    JavaScript中許多內置物件都重寫了該函式,以便更適合自身的功能需要,因此,不同型別物件的 valueOf方法的回傳值和回傳值型別均有可能不同

  ③ toString(),將陣列以字串的形式回傳

    不僅能夠將陣列轉換成字串,布林值也可以轉換,回傳值之間默認逗號分隔

    語法:陣列名.toString();

  ④ push,向陣列末尾追加資料,回傳當前陣列的長度

    可以向陣列末尾添加一個或多個元素,回傳值為追加元素后陣列的長度length

    語法:陣列名 .push('item1', 'item2',…);

    ★ push方法會改變原陣列內容

  ⑤ pop,洗掉陣列最后一個元素

    回傳值為洗掉的這個元素

    語法:陣列名 .pop();

    ★ pop方法會改變原陣列內容

  ⑥ join,將陣列轉換為字串,默認用逗號隔開

    以給定的引數做為分隔符,將陣列轉換為字串,如果不設定引數,則默認使用逗號分隔

    語法:陣列名 .join(' 分隔符 ');

  ⑦ shift(),洗掉陣列的第一個元素

    回傳值未洗掉的這個元素

    語法:陣列名 .shift();

    ★ shift方法也會對原陣列造成影響

  ⑧ unshift(),向陣列前端添加元素

    可以向陣列最前端添加一個或多個元素,回傳值為添加元素后陣列的長度length

    語法:陣列名 .unshift('item1','item2',…);

    ★ unshift方法也會對原陣列造成影響

  ⑨ reverse,陣列反轉

    將陣列中元素的順序反向排列

    語法:陣列名 .reverse(); //括號內不需要任何引數

    ★ reverse方法也會改變原陣列的結構

  ⑩ slice,陣列截取

    slice方法能夠根據指定的開始和結束下標,對陣列進行截取,并生成一個新的陣列

    新陣列的內容包括開始下標對應的元素到結束下標對應的前一個元素,即不包含結束下標所對應的元素本身 ★

    語法:陣列名 .slice(index1,index2);   //回傳值未生成的陣列

    slice方法的引數可以是負數,-1代表最后一個元素,-2代表倒數第二個元素,以此類推

    如果只寫一個引數,則表示對從當前下標對應的元素一直到最后一個元素進行截取

    該方法不更改原陣列!

  ? splice,陣列截取,并且可以插入新的元素(改變原陣列)

    splice方法是根據指定的下標和長度數,對陣列進行一定長度的截取,同時可以根據增加引數向陣列中插入一些新元素

    回傳值為截取元素所構成的陣列

    語法:陣列名 .splice(index, removeCount, addItem1, addItem2,…);

    ★ splice方法會改變原陣列的內容

    方法中插入新元素的引數不是必須設定,前兩個引數為必須

  ? sort,陣列排序

    語法:陣列名 .sort(sortby);

    排序順序可以按編碼或數字,并按升序或降序

    默認按照陣列中元素的編碼進行排序,此時括號內不需要設定引數

    也可以設定sortby函式定義按數字排序,引數sortby必須是函式,通過函式指定升序或降序

    ★ sort方法會改變原陣列的內容

  ? indexOf,對陣列進行索引

    在陣列中從前向后檢索指定元素,回傳值為元素在陣列中第一次出現的下標,如果沒有檢索到則回傳 -1

    indexOf方法的第二個引數表示從第幾個元素開始檢索,是可選引數

    語法:陣列名 .indexOf(item, beginIndex);

    第二個引數可以設定負數,-1表示從最后一個(倒數第一個)元素開始向后查找

  ? lastIndexOf,反序索引

     在陣列中從后向前檢索指定元素,回傳值為元素在陣列中最后一次出現的下標,如果沒有檢索到則回傳-1

    lastIndexOf方法的第二個引數表示從第幾個元素開始檢索,是可選引數

    語法:陣列名 .lastIndexOf(item, beginIndex);

    第二個引數可以為負數,-1表示從最后一個元素開始向前查找

  ? concat,用于連接兩個或多個陣列

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

    ★ 該方法不會改變原陣列,而僅僅回傳連接陣列的一個副本(新陣列)

<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.二維陣列

  如果陣列的元素還是陣列,那么外層陣列就稱為二維陣列

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

  二維陣列有兩個下標,第一個下標表示外層陣列的下標,第二個下標表示內層陣列的下標,如 arr[1][0];

  二維陣列是陣列的一種特殊形式,陣列的方法對二維陣列任然生效

5.push、unshift練習

<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練習

<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=https://www.cnblogs.com/husa/p/goods.length;
    var putIn=document.getElementById("putIn")
    putIn.onclick=function () {
        if (storage.value=https://www.cnblogs.com/husa/p/=5){
            alert("倉庫已滿!");
        }else{
            goods.push('貨物');
            storage.value=https://www.cnblogs.com/husa/p/goods.length;
        }
    }
    var takeOut=document.getElementById("takeOut");
    takeOut.onclick=function () {
        if (storage.value=https://www.cnblogs.com/husa/p/=0){
            alert('倉庫已空!');
        }else{
            goods.pop();
            storage.value=https://www.cnblogs.com/husa/p/goods.length;
        }
    }
</script>


 

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/2411.html

標籤:JavaScript

上一篇:JavaScript連載29-元素型別獲取、節點CD

下一篇:JS30 - 05 Flex Panel Gallery

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • IEEE1588PTP在數字化變電站時鐘同步方面的應用

    IEEE1588ptp在數字化變電站時鐘同步方面的應用 京準電子科技官微——ahjzsz 一、電力系統時間同步基本概況 隨著對IEC 61850標準研究的不斷深入,國內外學者提出基于IEC61850通信標準體系建設數字化變電站的發展思路。數字化變電站與常規變電站的顯著區別在于程序層傳統的電流/電壓互 ......

    uj5u.com 2020-09-10 03:51:52 more
  • HTTP request smuggling CL.TE

    CL.TE 簡介 前端通過Content-Length處理請求,通過反向代理或者負載均衡將請求轉發到后端,后端Transfer-Encoding優先級較高,以TE處理請求造成安全問題。 檢測 發送如下資料包 POST / HTTP/1.1 Host: ac391f7e1e9af821806e890 ......

    uj5u.com 2020-09-10 03:52:11 more
  • 網路滲透資料大全單——漏洞庫篇

    網路滲透資料大全單——漏洞庫篇漏洞庫 NVD ——美國國家漏洞庫 →http://nvd.nist.gov/。 CERT ——美國國家應急回應中心 →https://www.us-cert.gov/ OSVDB ——開源漏洞庫 →http://osvdb.org Bugtraq ——賽門鐵克 →ht ......

    uj5u.com 2020-09-10 03:52:15 more
  • 京準講述NTP時鐘服務器應用及原理

    京準講述NTP時鐘服務器應用及原理京準講述NTP時鐘服務器應用及原理 安徽京準電子科技官微——ahjzsz 北斗授時原理 授時是指接識訓通過某種方式獲得本地時間與北斗標準時間的鐘差,然后調整本地時鐘使時差控制在一定的精度范圍內。 衛星導航系統通常由三部分組成:導航授時衛星、地面檢測校正維護系統和用戶 ......

    uj5u.com 2020-09-10 03:52:25 more
  • 利用北斗衛星系統設計NTP網路時間服務器

    利用北斗衛星系統設計NTP網路時間服務器 利用北斗衛星系統設計NTP網路時間服務器 安徽京準電子科技官微——ahjzsz 概述 NTP網路時間服務器是一款支持NTP和SNTP網路時間同步協議,高精度、大容量、高品質的高科技時鐘產品。 NTP網路時間服務器設備采用冗余架構設計,高精度時鐘直接來源于北斗 ......

    uj5u.com 2020-09-10 03:52:35 more
  • 詳細解讀電力系統各種對時方式

    詳細解讀電力系統各種對時方式 詳細解讀電力系統各種對時方式 安徽京準電子科技官微——ahjzsz,更多資料請添加VX 衛星同步時鐘是我京準公司開發研制的應用衛星授時時技術的標準時間顯示和發送的裝置,該裝置以M國全球定位系統(GLOBAL POSITIONING SYSTEM,縮寫為GPS)或者我國北 ......

    uj5u.com 2020-09-10 03:52:45 more
  • 如何保證外包團隊接入企業內網安全

    不管企業規模的大小,只要企業想省錢,那么企業的某些服務就一定會采用外包的形式,然而看似美好又經濟的策略,其實也有不好的一面。下面我通過安全的角度來聊聊使用外包團的安全隱患問題。 先看看什么服務會使用外包的,最常見的就是話務/客服這種需要大量重復性、無技術性的服務,或者是一些銷售外包、特殊的職能外包等 ......

    uj5u.com 2020-09-10 03:52:57 more
  • PHP漏洞之【整型數字型SQL注入】

    0x01 什么是SQL注入 SQL是一種注入攻擊,通過前端帶入后端資料庫進行惡意的SQL陳述句查詢。 0x02 SQL整型注入原理 SQL注入一般發生在動態網站URL地址里,當然也會發生在其它地發,如登錄框等等也會存在注入,只要是和資料庫打交道的地方都有可能存在。 如這里http://192.168. ......

    uj5u.com 2020-09-10 03:55:40 more
  • [GXYCTF2019]禁止套娃

    git泄露獲取原始碼 使用GET傳參,引數為exp 經過三層過濾執行 第一層過濾偽協議,第二層過濾帶引數的函式,第三層過濾一些函式 preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'] (?R)參考當前正則運算式,相當于匹配函式里的引數 因此傳遞 ......

    uj5u.com 2020-09-10 03:56:07 more
  • 等保2.0實施流程

    流程 結論 ......

    uj5u.com 2020-09-10 03:56:16 more
最新发布
  • 使用Django Rest framework搭建Blog

    在前面的Blog例子中我們使用的是GraphQL, 雖然GraphQL的使用處于上升趨勢,但是Rest API還是使用的更廣泛一些. 所以還是決定回到傳統的rest api framework上來, Django rest framework的官網上給了一個很好用的QuickStart, 我參考Qu ......

    uj5u.com 2023-04-20 08:17:54 more
  • 記錄-new Date() 我忍你很久了!

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 大家平時在開發的時候有沒被new Date()折磨過?就是它的諸多怪異的設定讓你每每用的時候,都可能不小心踩坑。造成程式意外出錯,卻一下子找不到問題出處,那叫一個煩透了…… 下面,我就列舉它的“四宗罪”及應用思考 可惡的四宗罪 1. Sa ......

    uj5u.com 2023-04-20 08:17:47 more
  • 使用Vue.js實作文字跑馬燈效果

    實作文字跑馬燈效果,首先用到 substring()截取 和 setInterval計時器 clearInterval()清除計時器 效果如下: 實作代碼如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ......

    uj5u.com 2023-04-20 08:12:31 more
  • JavaScript 運算子

    JavaScript 運算子/運算子 在 JavaScript 中,有一些運算子可以使代碼更簡潔、易讀和高效。以下是一些常見的運算子: 1、可選鏈運算子(optional chaining operator) ?.是可選鏈運算子(optional chaining operator)。?. 可選鏈操 ......

    uj5u.com 2023-04-20 08:02:25 more
  • CSS—相對單位rem

    一、概述 rem是一個相對長度單位,它的單位長度取決于根標簽html的字體尺寸。rem即root em的意思,中文翻譯為根em。瀏覽器的文本尺寸一般默認為16px,即默認情況下: 1rem = 16px rem布局原理:根據CSS媒體查詢功能,更改根標簽的字體尺寸,實作rem單位隨螢屏尺寸的變化,如 ......

    uj5u.com 2023-04-20 08:02:21 more
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 08:01:50 more
  • 如何在 vue3 中使用 jsx/tsx?

    我們都知道,通常情況下我們使用 vue 大多都是用的 SFC(Signle File Component)單檔案組件模式,即一個組件就是一個檔案,但其實 Vue 也是支持使用 JSX 來撰寫組件的。這里不討論 SFC 和 JSX 的好壞,這個仁者見仁智者見智。本篇文章旨在帶領大家快速了解和使用 Vu ......

    uj5u.com 2023-04-20 08:01:37 more
  • 【Vue2.x原始碼系列06】計算屬性computed原理

    本章目標:計算屬性是如何實作的?計算屬性快取原理以及洋蔥模型的應用?在初始化Vue實體時,我們會給每個計算屬性都創建一個對應watcher,我們稱之為計算屬性watcher ......

    uj5u.com 2023-04-20 08:01:31 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:01:10 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:00:32 more