數據結構是指相互之間存在着一種或多種關係的數據元素的集合和該集合中數據元素之間的關係組成 。
經常使用的數據結構有:數組,棧,鏈表,隊列,樹,圖,堆,散列表等,如圖所示: javascript
數組是最簡單的內存數據結構,數組是能夠再內存中連續存儲多個元素的結構,在內存中的分配也是連續的,數組中的元素經過數組下標進行訪問,數組下標從0開始。 tips:數據通常存儲着一系列數據類型相同的值,但在JavaScript中,能夠在數組中保存不一樣類型的值,但通常不須要這麼用。
1.建立數組java
let daysOfWeek = new Array(); let daysOfWeek = new Array(7); let daysOfWeek = new Array('1', '2', '3', '4', '5', '6', '7');
2.添加元素數組
// 初始化nums數組 let nums = [0,1,2,3,4,5,6]; // 指定位置添加 nums[nums.length] = 7; // 使用push(),把元素添加到數組末尾 nums.push(8);// 0...8 nums.push(9, 10);// 0...10 // 使用unshift,把元素添加到數組首位 nums.unshift(-1);// -1...10 nums.unshift(-3,-2);// -3...10
3.刪除元素數據結構
// pop(),刪除最後一個 nums.pop();//-3...9 // shift(),刪除第一個 nums.shift();//-2...9
4.任何位置刪除或添加元素函數
// splice()方法 nums.splice(2, 3);// 刪除 index=2 開始的後的3個數 -2,-1,3...9 nums.splice(2, 0, 0, 1, 2);// 從index=2開始插入0,1,2 -2...9
5.javascript數組方法參考spa
concat() // 鏈接2個或多個數組,並返回結果 every() // 對數組中的每一項運行給定函數,若是該函數對每一項都返回true,則返回true filter() // 對數組中的每一項運行給定函數,返回該函數能返回true的項做爲新數組 forEach() // 對數組中的每一項運行給定函數,沒有返回值 join() // 按傳入的字符鏈接成一個字符串 indexOf() // 從前日後遍歷,返回第一個與傳入參數相等的索引值,沒找到返回-1 lastIndexOf() // 從後往前遍歷,返回第一個與傳入參數相等的索引值 map() // 對數組中的每一項運行給定函數,返回每次函數調用的結果組成新的數組 reverse() // 顛倒數組中元素的順序 slice() // 傳入索引值,將數組對應索引值範圍內的元素做爲新數組返回 some() // 對數組中的每一項運行給定函數,若是某一項返回true,則返回true sort() // 按照字母順序排序,支持傳入指定排序方法的函數做爲參數 toString() // 將數組做爲字符串返回 valueOf() // 和toString相似,將數組做爲字符串返回
6.ES6數組新增方法code
@@iterator // 返回一個包含數組鍵值對的迭代器對象,可經過同步調用獲得數組元素的鍵值對 copyWithin() // 複製數組中一系列元素,到該數組指定的起始位置 entries() // 返回包含數組全部鍵值對的@@iterator includes() // 數組中存在某個元素則返回true,不然返回false(es7新增) find() // 根據回調函數給定的條件從數組中查找元素,若是找到則返回該元素 findIndex() // 根據回調函數給定的條件從數組中查找元素,若是能找到就返回該元素在數組中的索引 fill() // 用傳入參數填充數組 from() // 根據已有數組建立一個新數組 keys() // 返回包含數組全部索引的@@iterator of() // 根據傳入的參數建立一個新數組 values() // 返回包含數組中全部值的@@iterator
7.數組優缺點
優勢:
(1)按照索引查詢元素速度快
(2)按照索引遍歷數組方便對象
缺點:
(1)數組的大小固定後就沒法擴容了
(2)數組只能存儲一種類型的數據
(3)添加,刪除的操做慢,由於要移動其餘的元素。blog
適用場景:
頻繁查詢,對存儲空間要求不大,不多增長和刪除的狀況。排序