84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
哪個大神能有辦法
你的問題
如何取得數組下標為偶數的下標所對應的數組內的值
換句話說就是: 取得數組內偶數下標對應的 數組
數組
照上面的句子來看,合理猜測你說的其實是 從二維數組裡取得偶下標對應的數組們,並把他們鋪平為一個數組
從二維數組裡取得偶下標對應的數組們,並把他們鋪平為一個數組
例如
var test = [ ['a'], ['b'], ['c'], ['d'] ]
處理之後結果是 ['a', 'c'] 即 偶數下標對應的數組們合併為一個數組 (下標從 0 開始 0 是偶數)
['a', 'c']
偶數下標對應的數組們合併為一個數組
0
0 是偶數
如果確信是這樣 請繼續往下看
var isEven = i => i % 2 === 0; var evens = arr => arr.filter( // 子数组, 序号 => idx 是偶数则返回 true 否则 false // 这样可以过滤掉奇数下标的元素 (subArr, idx) => isEven(idx) );
例如 [[1], [2]] 處理後變成 [1, 2]
[[1], [2]]
[1, 2]
這個過程就是鋪平
var flat = arr => arr.reduce((acc, cur) => { // 每一次的返回值将会作为下一次的 acc 来用 // 那么每一次都把 acc cur 合并在一起 最后就是铺平了 return acc.concat(cur) }, [])
// 把 evens 执行结果传给 flat 执行 作为 getAllEvens 的返回值 // 可以想象数学上的 y = g(f(x)); var getAllEvens = arr => { let temp = evens(arr); return flat(temp); }
定義待測試數組
// 二维数组 var testArr = [ ['这里', '是', '0', '号', '数组', '当然是偶数'], ['所以', '这', '里', '是', '1号', '也就是奇数'], [0,1,2,3,4], [-1, -2, -3, -4] ];
期望值是 這裡是0號數組當然是偶數 和 0,1,2,3,4
這裡是0號數組當然是偶數
0,1,2,3,4
以下是測試程式碼:
var res = getAllEvens(testArr); console.log('数组:', res); console.log('合并:', res.join(','));
結果如圖
預期所得,確信可行。
一些知識點
MDN - 陣列的 filterMDN - 陣列的 reduceMDN - 箭頭函數
雷雷
幫你簡單實作了個函數
let arr = [0,1,2,3,4,5,6,7,8,9]; function even(arr){ return arr.filter((val,index)=>{ if(index%2 === 0){ return true; } }) }; even(arr); //输出[0, 2, 4, 6, 8]
你的問題
換句話說就是: 取得數組內偶數下標對應的
數組
照上面的句子來看,合理猜測你說的其實是
從二維數組裡取得偶下標對應的數組們,並把他們鋪平為一個數組
例如
處理之後結果是
['a', 'c']
即偶數下標對應的數組們合併為一個數組
(下標從0
開始0 是偶數
)如果確信是這樣 請繼續往下看
先取得偶下標對應的陣列們
把用 evens 得到的陣列們鋪平
例如
[[1], [2]]
處理後變成[1, 2]
這個過程就是鋪平
組裝
測驗
定義待測試數組
期望值是
這裡是0號數組當然是偶數
和0,1,2,3,4
以下是測試程式碼:
ScreenShot
結果如圖
預期所得,確信可行。
Links
一些知識點
MDN - 陣列的 filter
MDN - 陣列的 reduce
MDN - 箭頭函數
雷雷
雷雷
幫你簡單實作了個函數