聊聊在javascript中數組的使用

雜談

    數組是最簡單的內存數據結構,也是js中最經常使用的類型之一,整理了下我以爲應該瞭解數組的相關知識。算法

  1. 在js中,數組裏能夠容納容納js中任何類型的值。
  2. 在聲明數組後就能夠向數組中插入值,不須要設定什麼。
  3. 數組的大小是動態的,能夠根據數據的增長而自動增加。
  4. js只支持一維數組,並不支持矩陣(二維數組)。可是,咱們能夠經過數組嵌套,實現矩陣或任意多維數組。
  5. 數組的項數就保存在它的length屬性中,這個屬性的值始終會大於等於0,而且length屬性並非只讀屬性,經過使用length能夠對數組進行修改操做。
  6. 判斷一個對象是否是數組,Array.isArray( ) ES5新增

方法大全

在js中數組是可修改的對象,每一個數組都有着不少好用的方法,大多數咱們平常都會經常使用。
1.建立數組數組

  • 使用Array的構造函數 new Array( )
    new操做符能夠省略
let newArr = new Array()
  • 數組字面量表示法
    由[]表示,內含數組項
let newArr = []

2.添加元素數據結構

  • push() 把元素添加到數組的末尾。
  • unshift() 把元素添加到數組的頭部。
  • splice() 向/從數組中添加/刪除項目,而後返回。
  • 利用length 使用下標 進行操做。

clipboard.png

3.刪除元素函數

  • delete操做符、下標 不改變數組長度只會把下標記值置爲undefined。
  • splice() 向/從數組中添加/刪除項目,而後返回 同上添加。

clipboard.png

4.其它經常使用方法spa

  • concat() 鏈接多個數組而且將結果返回爲一個新的數組。
  • forEach() 對當前數組中的每一項運行給定的函數。
  • indexOf() 返回第一個與給定參數相等結果的數組元素的索引,若是沒有找到則返回結果是 -1。
  • map() 對當前數組中的每一項運行給定的函數,返回每次函數調用的結果組成的數組。
  • every() 對當前數組中的每一項運行給定的函數,若是函數每一項返回的都是ture,則返回true。
  • filter() 對當前數組中的每一項運行給定的函數,返回函數結果爲true的項組成的數組。
  • join() 將數組中全部的元素拼接成一個新的字符串。
  • lastIndexOf() 返回在數組中搜索到的與給定參數相等的元素結果裏的索引最大的值。
  • reverse() 顛倒數組中元素的順序,原先第一個執行後會成爲最後一個。
let newArr = [1, 'a', 2, 'b'];
console.log(newArr.join(';'));
newArr.forEach(function(item, index) {
  console.log('item: '+ item + ' ' + 'index: ' + index);
})
console.log(newArr.indexOf('a'));
let strArr = newArr.filter(function(item) {
  if(typeof(item) === 'string') {
    return true;
  }
})
console.log(strArr);
console.log(strArr.reverse());

clipboard.png

使用字符串的方法str.split() 能夠返回字符串轉化爲數組的結果。設計

結尾

js數組也能夠表現的像棧和隊列同樣的數據結構,實現相應的行爲,感興趣的能夠去研究下。code

棧和隊列簡介
    棧是一種聽從後進先出 (LIFO) 原則的有序集合。新添加的或待刪除的元素都保存在棧的 末尾,稱做棧頂,另外一端就叫棧底。在棧裏,新元素都靠近棧頂,舊元素都接近棧底。
隊列是遵循FIFO (First In First Out,先進先出,也稱爲先來先服務) 原則的一組有序的項。 隊列在尾部添加新元素,並從頂部移除元素。最新添加的元素必須排在隊列的末尾。對象

參考資料:
    js高級程序設計 js數據結構與算法索引

相關文章
相關標籤/搜索