js實現資料結構--陣列

陽光下的冷靜發表於2018-11-23

1 建立陣列:
​​​​​​
(1)var days = new Array()
(2)var days = new Array(7),指定陣列的長度
(3)var days = new Array('Sunday', 'Monday', 'Tuesday')  在建立陣列的同時初始化陣列
但在js中不建議這樣建立陣列,最好的建立陣列的方法是:var days = [];

2 訪問陣列元素:訪問陣列元素的方法就是使用平常的方法,用中括號傳遞數值的位置

3 為陣列新增元素:
   1) 使用push方法(尾插法):將新的元素新增到陣列的末尾,可以新增任意個元素,返回的是新陣列的長度
       語法: Array.push(新元素1, 新元素2,...)
   2)使用unshift方法(頭插法):將新的元素新增到陣列的首位,也可以新增任意個元素,返回的是新陣列的長度
       語法: Array.unshift(新元素1, 新元素2,....)

4 為陣列刪除元素


   1) 使用pop方法(尾部刪除):刪除陣列中最靠後的元素:返回值是被刪除的元素,如果陣列在刪除之前就為空,則返回undefined
       語法:Array.pop();
   2) 使用shift方法(頭部刪除):刪除陣列中最前面的元素:返回值是被刪除的元素,如果陣列在刪除之前就為空,則返回undefined
       語法:Array.shift();


5 為陣列在任意位置新增或者刪除元素


       語法:Array.splice()
       該方法接受多個引數,第一個引數是想要刪除或者插入的元素的索引值;第二個引數是刪除元素的個數(如果不刪除元素就傳如0);第三個引數以及往後的引數,就是要新增到陣列的元素,返回值是被刪除的元素組成的新陣列

6 其他常用的方法:


   1)連線2個或更多陣列,並返回最後組成的陣列
       語法:arrayObject.concat(arrayX,arrayX,......,arrayX)將所有的arrayX新增到陣列arrayObject中,arrayX可以是單個物件或者陣列
   2)根據一個類陣列物件或者可遍歷物件轉換成一個真正的陣列。
   let arrayLike = {
         0: 'tom',
         1: '65',
         2: '男',
         3: ['jane','john','Mary'],
         'length': 4
     }
     let arr = Array.from(arrayLike)
     console.log(arr) // ['tom','65','男',['jane','john','Mary']]
     將一個類陣列物件轉換為一個真正的陣列,必須具備以下條件:
          1、該類陣列物件必須具有length屬性,用於指定陣列的長度。如果沒有length屬性,那麼轉換後的陣列是一個空陣列。
          2、該類陣列物件的屬性名必須為數值型或字串型的數字
          ps: 該類陣列物件的屬性名可以加引號,也可以不加引號
     Array.from還可以接受第二個引數,作用類似於陣列的map方法,用來對每個元素進行處理,將處理後的值放入返回的陣列。如下:
              let arr = [12,45,97,9797,564,134,45642]
              let set = new Set(arr)
              console.log(Array.from(set, item => item + 1)) // [ 13, 46, 98, 9798, 565, 135, 45643 ]
      將字串轉換為陣列:
              let  str = 'hello world!';
              console.log(Array.from(str)) // ["h", "e", "l", "l", "o", " ", "w", "o", "r", "l", "d", "!"]
       簡單應用:複製陣列  var days2 = Array.from(days)

  3)Array.of() 方法用於將一組值,轉換為陣列;Array.of總是返回引數值組成的陣列。如果沒有引數,就返回一個空陣列
          語法:Array.of(element0[, element1[, ...[, elementN]]]) 返回值是新的陣列例項
  4)Array.fill()函式,使用制定的元素填充陣列,其實就是用預設內容初始化陣列。
          語法:該函式有三個引數。
                 arr.fill(value, start, end)
                 value:填充值。
                 start:填充起始位置,可以省略。
                 end:填充結束位置(不包括該位置),可以省略,實際結束位置是end-1。
                 如果起始位置和結束位置都被省略了,則預設的是填充整個陣列,或者省略結束位置就是填充到陣列的末尾
           簡單應用:建立陣列並進行初始化:let ones = Array(6).fill(2)建立了一個長度為6,所有元素都為2的陣列
  5)copyWithin()函式,在當前陣列內部,將指定位置的成員複製到其他位置(會覆蓋原有成員),然後返回當前陣列
         語法:Array.prototype.copyWithin(target, start = 0, end = this.length)
                 它接受三個引數。
                 target(必需):從該位置開始替換資料。
                 start(可選):從該位置開始讀取資料,預設為0。如果為負值,表示倒數。
                 end(可選):到該位置前停止讀取資料,預設等於陣列長度。如果為負值,表示倒數。
                 例:[1, 2, 3, 4, 5].copyWithin(0, 3)// [4, 5, 3, 4, 5]

  6)陣列排序:
          Array.reverse():陣列元素反序,返回的是陣列元素順序反過來的原陣列
          Array.sort():方法用於對陣列的元素進行排序,並返回陣列。預設排序順序是根據字串Unicode碼點。
              語法:arrayObject.sort(sortby);引數sortby可選。規定排序順序。必須是函式
              如果呼叫該方法時沒有使用引數,將按字母順序對陣列中的元素進行排序,說得更精確點,是按照字元編碼的順序進行排序。
              要實現這一點,首先應把陣列的元素都轉換成字串(如有必要),以便進行比較

  7)陣列搜尋
         Array.indexOf(引數):返回與引數匹配的第一個元素的索引,找不到的返回undefined
         Array.lastIndexOf(引數):返回與引數匹配的最後一個元素的索引,找不到的返回-1
         Array.find(回撥函式):搜尋一個滿足回撥函式條件的值,返回值是第一個滿足條件的值,找不到的返回undefined
         Array.findIndex(回撥函式):搜尋一個滿足回撥函式條件的索引值,返回的是第一個滿足條件的值的索引,找不到的返回-1
         Array.includes():返回布林值表示是否找到了引數字串
         Array.toString():將陣列元素轉換成一個字串,返回該字串
         Array.join(分隔符):使用分隔符將陣列元素隔開,返回隔開後的物件

相關文章