其實寫這篇之前,就已經用過陣列了,可以看變數與資料型態那章。
JavaScript 的陣列可以是非同型的。比如……
1 | const array1 = ['1', [2, 3], 'three', 4] |
也有所謂的建構式,不過比較少使用
1 | const arr1 = new Array(1, 2, 3); |
操作陣列內容
原地
修改,沒有一定的規則,push 會就地修改,而 concat 會回傳一個新陣列。
開頭結尾添加或移除元素
開頭添加或移除元素
1 | const a = [1, 2, 3] |
在結尾添加多個元素
1 | let a = [1, 2, 3] |
取得子陣列
使用 slice
切割
1 | let a = [1, 2, 3, 4, 5] |
切割 與 替換陣列元素
ES6 新增的方法,第一個引數是被貼上的目標,第二個引數是要開始複製的地方,最後一個引數是停止複製的地方。
1 | const a = [1, 2, 3, 4] |
填入特定值
使用 fill()
1 | const a = [1, 3, 5] |
反轉 與 排序
1 | const a = [5, 3, 1, 2, 5] |
也可以指定一個排序式 ( 隨意寫寫 )
1 | const a = [ { name : "cat" }, { name : "bana" }, { name : 'active' }]; |
搜索
搜尋陣列 ( lastIndexOf, indexOf ,前者是從右往左,後者是一般常用的左往右)
1 | const a = [1, 2, 3, 5, 9] |
還有所謂的 findIndex ( find )
1 | const a = [1, 3, 5, 9] |
這邊挺離奇的是可以提供一個函式去做運作,最後如果找不到則回傳 -1
( 在這邊其實有 some()
跟 every()
函式可以玩…… )
some()
→ 陣列中是否有一項符合某種條件
every()
→ 陣列中的所有元素是否都符合某種條件
map 與 filter
這兩個東西大家看到應該都不陌生,map 可以轉換陣列內的元素,filter 可以移除陣列裡不想要的東西
1 | const a = [1, 2, 3] |
其實很多時後將 map 跟 filter 組合運用會有很好的效果
魔法 reduce
reduce 跟 map 、 filter 一樣,可以讓你提供一個控制結果的函式。不過 reduce 第一個值卻是累加器,我們直接來看…….
1 | const a = [1, 3, 5] |
刪除、連接字串
刪除字串
1 | const a = [1, 2, 3] |
連接字串
1 | const a = [1, 3, 5] |
這個東西很重要…… Array.prototype.join
可建立像 HTML <ul> <li>
串列這些東西……
1 | const testHTML = '<ul><li>' + attributes.join('<li></li>') + '</li></ul>' |