Array 複習 與 ES6 新語法
push、pop、shift、unshift 差異
- push:加到陣列末端
- pop:移除最末端
- shift:移除最前端
- unshift:加到陣列前端
1 | var home = ["爸爸", "媽媽"]; |
排序與反轉 sort 與 reverse
sort
arr.sort([compareFunction])
如果 compareFunction
沒有被應用, 元素將被轉換為字串並以Unicode
碼位來比較並排序。
特別一提,在數值排序中,9 會在 80 前面,但因為數字被轉換成字串,在Unicode
順序中 “80” 會在 “9” 前面。
1 | //大寫英文 Unicode 排在 小寫英文 前面 |
1 | // 數字被轉換成字串 |
reverse
將整個陣列中的成員順序反轉。
1 | const home = ["0.爸爸", "1.媽媽", "2.老大", "3.老二", "4.老么"]; |
另一個情況是字串中的字元,如果要進行反轉的話,並沒有字串中的 reverse 方法,要用這個陣列的 reverse 方法加上字串與陣列的互相轉換的split
與join
方法,可以使用以下的函式:
1 | function reverseString(str) { |
slice
arr.slice([begin[, end]])
回傳一個新陣列,為原陣列選擇之 begin
至 end
(不含 end)部分的淺拷貝(shallow copy)。
1 | const home = ["0.爸爸", "1.媽媽", "2.老大", "3.老二", "4.老么"]; |
splice
array.splice(start[, deleteCount[, item1[, item2[, …]]]])
可刪除既有元素並/或加入新元素來改變一個陣列的內容(會改變原陣列值)。
1 | const home = ["0.爸爸", "1.媽媽", "2.老大", "3.老二", "4.老么"]; |
淺拷貝作法
1. ES6 展開運算子( Spread Operator )
1 | const aArray = [1, 2, 3]; |
它也可以用來組合陣列
1 | const aArray = [1, 2, 3]; |
2. slice
1 | const oldArray = [1, 2, 3]; |
3. concat
1 | const oldArray = [1, 2, 3]; |
ES6- find 與 findIndex
- find => 回傳 value
- findIndex => 回傳 index
基本寫法
1 | const aArray = [1, 3, 5, 7, 10, 22]; |
進階應用
不過當會用到 find
或 findIndex
時,表示要尋找的條件通常比較複雜一點,才能顯現他們比 indexOf
強大之處。
範例 1
從陣列中找出符合條件的 物件
1 | var inventory = [ |
範例 2
找出質數
1 | function isPrime(element, index, array) { |
ES6-includes
在陣列中尋找是否包含這個值,如果有就會回傳 true,沒有則會回傳 false。
1 | // 數字 |