1. 程式人生 > >JavaScript數組學習總結

JavaScript數組學習總結

ons arr spl includes 交換 順序 javascrip 一個 scrip

數組
  數組
      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取下一個元素,直到取完所有元素,獲得的最終值作為        返回值返回

JavaScript數組學習總結