javascript - 如何取得數組下標為偶數的下標所對應的數組內的值
世界只因有你
世界只因有你 2017-07-05 10:49:24
0
4
1990

哪個大神能有辦法

世界只因有你
世界只因有你

全部回覆(4)
阿神

你的問題

如何取得數組下標為偶數的下標所對應的數組內的值

換句話說就是: 取得數組內偶數下標對應的 數組

照上面的句子來看,合理猜測你說的其實是 從二維數組裡取得偶下標對應的數組們,並把他們鋪平為一個數組

例如

var test = [
    ['a'],
    ['b'],
    ['c'],
    ['d']
]

處理之後結果是 ['a', 'c']偶數下標對應的數組們合併為一個數組 (下標從 0 開始 0 是偶數


如果確信是這樣 請繼續往下看

先取得偶下標對應的陣列們

var isEven = i => i % 2 === 0; 

var evens = arr => arr.filter(
    // 子数组, 序号 => idx 是偶数则返回 true 否则 false 
    // 这样可以过滤掉奇数下标的元素 
    (subArr, idx) => isEven(idx)
); 

把用 evens 得到的陣列們鋪平

例如 [[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


以下是測試程式碼:

var res = getAllEvens(testArr); 

console.log('数组:', res); 
console.log('合并:', res.join(','));

ScreenShot

結果如圖

預期所得,確信可行。

Links

一些知識點

MDN - 陣列的 filter
MDN - 陣列的 reduce
MDN - 箭頭函數

大家讲道理

雷雷

洪涛

雷雷

为情所困

幫你簡單實作了個函數

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]
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板