實做:Array方法操作
學習重點
- Array方法操作:sort , map , filter ,reduce
- Array.from 轉成陣列
解說
請把程式碼貼到瀏覽器console查看結果
順道提 console.table( );
在Chrome console 下看會變成下圖這樣
變成表格格式了!Cool ~
1 | const inventors = [ |
- filter
callback function 返回 true 即保留該元素
1 | const fifteen = inventors.filter( |
- map
callback function 處理後返回新陣列
1 | const fullName = inventors.map( |
- sort
預設依照Unicode進行排序
1 | var scores = [1, 10, 21, 2]; |
也可以自訂compare function,若a>b 大於0,b會排在a之前
1 | const ordered = inventors.sort( (a, b) => (a > b) ? 1 : -1 ); |
排序活的年數lol
1 | inventors.sort( (a, b) => a.passed - a.year - (b.passed - b.year) ); |
- reduce
由左到右將所有元素做累加,並返回最終值
1 | [0,1,2,3,4].reduce(function(preVal, lastVal, index, array){ |
後面可以多一個參數當作初始值
1 | [0,1,2,3,4].reduce(function(preVal, lastVal, index, array){ |
統計重複的值有幾個
1 | const data = ['car', 'car', 'truck', 'truck', 'bike', 'walk', 'car', 'van', 'bike', 'walk', 'car', 'van', 'car', 'truck' ]; |
最後結合 map 與 filter 在下面網站找出所有含有 de 的字眼
https://en.wikipedia.org/wiki/Category:Boulevards_in_Paris
1 | const aElement = Array.from(document.querySelectorAll('.mw-category a')) |
因querySelectorAll()
不是陣列所以沒有Array方法,可以使用Array.from轉成陣列格式,
或者使用ES6解構語法,
1 | [...document.querySelectorAll('.mw-category a')]; //注意要加上[ ] |
ES5用法則是
1 | [].slice.call(document.querySelectorAll('.mw-category a')); |