JavaScript數組學習總結

来源:https://www.cnblogs.com/zddq/archive/2019/03/17/10546104.html
-Advertisement-
Play Games

數組 數組 1.數組:數組是一組數據(數據類型不限,任意)的有序集合 >我們寫代碼,一般一個數組只放一種數據類型的數據 2.我們寫代碼,一般一個數組只放一種類型的數據 3.註意: 大多數的語言裡面數組的存儲是連續的,但是js的數組特點決定了js的數組不一定是連續的。 數組的特點 1.作用:將許多零散 ...


數組
   數組
      1.數組:數組是一組數據(數據類型不限,任意)的有序集合===>我們寫代碼,一般一個數組只放一種數據類型的數據

      2.我們寫代碼,一般一個數組只放一種類型的數據

      3.註意: 大多數的語言裡面數組的存儲是連續的,但是js的數組特點決定了js的數組不一定是連續的。
   數組的特點
      1.作用:將許多零散的數據組成一個整體

      2.數組本身屬於複雜數據類型(引用數據類型/對象),即我們使用的數組就是“對象”

      3.數據類型不限,任意(一般一個數組只放一種數據類型的數據)

      4.根據需要,對數組內部數據進行一些操作(增刪查改)
   數組的創建
      1.字面量的方式
      例如: let arr = [];(沒有初始化值)
      例如: let arr = [ 1,2,3,4,5,"6"];(初始化了六個值)

      2.構造函數的方式
      例如: le arr = new Array();(沒有初始化值)
      例如: let arr = new Array(1,2,3,4,5,"6")(為數組初始化)
      如果let arr = new Array(5)就相當於創建了五個空元素的arr數組
   數組的下標
      數組中存儲是數據時有序的,我們就給每一個元素加一個編號,稱之為“下標”/"索引"(index)
      索引的特點: index從0開始,到 “數組元素個數-1” 結束
      下標的使用: 數組名稱[index]===> 查看數據:(查詢時,越界?訪問到一個undefined值,不管學什麼語言,越界一般是不允許的)
    多維數組
      數組裡面嵌套數組的這種結構,就叫做多維數組。二維數組本質上就是一維數組作為了一個一維數組的元素,即數組的數組;
      例如:let arr = [[1,2,3],[4,5,6]];
   數組的遍歷
      1.普通for迴圈
      2.for...of遍歷(ES6新增的)註意:可以把value看成每次迴圈按順序取了arr中元素的值,而value不代表arr的元素,所以value的賦值不影響arr中的元素
    ES6中的操作
      1.擴展
      “...”:擴展運算符 ===>把一個整體擴展開來,相當於解構一個數組的一個維度。
      運用:
      a.合併數組  let newArr = [...arr1,...arr2]
      b.拷貝數組  let arr2 = [...arr1]

      2.解構
      等號兩邊保持解構一致(關於數組),然後按照對應的位置,把右邊的數據賦值給左邊的變數;實現批量賦值

      註意
      a、當左邊的變數多餘右邊的數據時:沒有對上號的變數值不變
      b、當左邊的變數少餘右邊的數據時:沒有對上號的數據不影響賦值

    運用場景
      a、墨水交換
       let num1 = 9,num2 = 0,t;
       [num1,num2] = [num2,num1];
      b、獲取對應的值(前面用逗號隔開)
      let [,,,d,e] = arr;
   排序 例如:冒泡與選擇等
      1.冒泡排序

      let array = [5,2,7,9,8,0,44,121,1];
      for(let i = 0; i < array.length - 1; i++){
          for (let j = array.length - 1; j > i; j--) {
              if(array[j]<array[j - 1]){
                  [array[j],array[j - 1]]=[array[j - 1],array[j]];
              }
          }
      }
      console.log(array);


      2.選擇排序
      let array = [5,2,7,9,8,0,44,121,1];
      for (let i = 0; i < array.length-1; i++) {
          let min = array[i],index=i;
          for (let j = 1+i; j < array.length; j++) {
             if(min > array[j]){
                 min = array[j];
                 index = j;
             }
          }
         [array[i],array[index]]=[array[index],array[i]];
      }

      數組的方法(都很實用)
       1.添加
        push(value) 概念:在尾部添加元素,並返回一個新的長度
        unshift(value) 概念:在數組開頭添加元素,並返回一個新的長度
       

       2.刪除
        pop() 概念:刪除最後一個元素
        shift() 概念:刪除第一個元素  
        splice(參數1,參數2,參數3) 
        第一個參數:整數,規定添加/刪除項目的位置,使用負數可從數組結尾處規定位置。
        第二個參數:要刪除的項目數量。如果設置為 0,則不會刪除項目。
        第三個參數以及後面的參數:可選。向數組添加的新項目。
        返回值:包含被刪除項目的新數組,如果有的話。

       3.查找
        indexOf(value) 概念:查找所在位置(index),從頭開始查,查到第一個結束
        lastIndexOf(value) 從尾部開始查找和indexOf相反
        includes(value) 要查詢的值,返回有沒有(true/false)

       4.提取
        slice() 通過指定開始和結束索引,來提取元素(組成新數組),不影響原數組===>[start,end)

       5.拼接
        join("value")拼接:separator參數代表了“分隔符”

       6.切割
        split("value") 切割:上一個方法的反向操作

       7.其它
        concat() 
        把B數組拼接到A數組後,作為返回值返回,不影響原數組
        reverse()
        反序的改變原數組
        sort()
        預設規則是按照字典順序的

        ex.sort(function(a,b){
            return a-b;//結果是負數b大,正數a大,相等值為0
        });
        ex.reverse();
        console.log(ex);//true====》沒有副本的產生,返回值就是原數組
      數組的遍歷
        - foreach 普通遍歷,沒有return返回值
        - map 單獨處理每一個元素:會把每一個元素做return後面的處理,返回組成新的數組
        - filter 過濾,滿足條件留下組成新數組
        - some/every some(只要有一個滿足,返回true)/every(必須全部滿足,才返回true)
        - reduce/reduceRight(迭代計算)
        - 將數組第一個元素和第二個元素分別賦值給prev,next,然後通過return後面的表達式獲得一個值,該值作為下一次迴圈的prev,而next取下一個元素,直到取完所有元素,獲得的最終值作為        返回值返回


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 父組件向子組件傳值 1. 組件實例定義方式,註意:一定要使用 屬性來定義父組件傳遞過來的數據 2. 使用 或簡化指令,將數據傳遞到子組件中: 子組件向父組件傳值 1. 原理:父組件將方法的引用,傳遞到子組件內部,子組件在內部調用父組件傳遞過來的方法,同時把要發送給父組件的數據,在調用方法的時候當作參 ...
  • vue+element 文件操作 作者:一粒塵土 時間:2019 3 17 註:以下操作針對 vue cli 目錄 "使用" "組件常用參數" "組件常用方法" "上傳文件" "上傳文件格式限制" "回顯文件" "下載文件" "刪除文件" 使用 使用npm安裝Element ui 依賴 配置vue中 ...
  • 參考鏈接: http://www.w3school.com.cn/xmldom/met_document_createelement.asp(createElement() 方法) http://www.w3school.com.cn/jsref/prop_option_index.asp(HTML ...
  • 當前版本v16.8.4 裝載過程(組件第一次在DOM樹中渲染的過程): constructor(常用) getInitialState(v16.0已廢棄) getDefaultProps(v16.0已廢棄) componentWillMount(v17.0中將被棄用) getDerivedState ...
  • 概述:jQuery是我們最常用的js庫,對於事件的綁定也是有很多種,on、one、live、bind、delegate等等,接下來我們逐一來進行講解。 本片文章中事件所帶的為版本號,例:v1.7+為1.7版本以上才有,v3.0 為3.0版本後不推薦使用,特此聲明。 本文參考了 w3school 事件 ...
  • JavaScript這門語言中,最令人迷惑的地方有三個,閉包、this、原型。針對大多數人,可以利用詞法作用域等避開this的坑,但是我們不能一直生活在舒適區,要敢於打破砂鍋問到底,對我們來說也是一種提升。 一、一般對this關鍵字的誤解: 1、this指向函數自身 2、this指向函數聲明的詞法作 ...
  • css對齊方案總結 css對齊方案總結 垂直居中 通用佈局方式(內斂元素和塊狀元素都適用) 利用flex:核心代碼: 12345 .container{ display:flex; flex-direction:column; justify:center} 利用transformX(-50%):核 ...
  • 原型鏈 原型鏈 引入從Object和Function開始 Object和Function都作為JS的自帶函數,Object繼承自己,Funtion繼承自己,Object和Function互相是繼承對方,也就是說Object和Function都既是函數也是對象。 12 console.log(Func ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...