Tuhan mana boleh buat sesuatu
Soalan anda
Bagaimana untuk mendapatkan nilai dalam tatasusunan yang sepadan dengan subskrip bernombor genap
Dalam erti kata lain: Dapatkan 數(shù)組
Berdasarkan ayat di atas, adalah munasabah untuk meneka bahawa apa yang anda bincangkan sebenarnya adalah 從二維數(shù)組里取得偶下標(biāo)對應(yīng)的數(shù)組們,并把他們鋪平為一個數(shù)組
Sebagai contoh
var test = [
['a'],
['b'],
['c'],
['d']
]
Hasil selepas diproses ialah ['a', 'c']
即 偶數(shù)下標(biāo)對應(yīng)的數(shù)組們合并為一個數(shù)組
(下標(biāo)從 0
開始 0 是偶數(shù)
)
Jika anda yakin perkara ini berlaku, sila teruskan membaca
var isEven = i => i % 2 === 0;
var evens = arr => arr.filter(
// 子數(shù)組, 序號 => idx 是偶數(shù)則返回 true 否則 false
// 這樣可以過濾掉奇數(shù)下標(biāo)的元素
(subArr, idx) => isEven(idx)
);
Sebagai contoh [[1], [2]]
處理之后變成 [1, 2]
Proses ini adalah menurap
var flat = arr => arr.reduce((acc, cur) => {
// 每一次的返回值將會作為下一次的 acc 來用
// 那么每一次都把 acc cur 合并在一起 最后就是鋪平了
return acc.concat(cur)
}, [])
// 把 evens 執(zhí)行結(jié)果傳給 flat 執(zhí)行 作為 getAllEvens 的返回值
// 可以想象數(shù)學(xué)上的 y = g(f(x));
var getAllEvens = arr => {
let temp = evens(arr);
return flat(temp);
}
Tentukan tatasusunan untuk diuji
// 二維數(shù)組
var testArr = [
['這里', '是', '0', '號', '數(shù)組', '當(dāng)然是偶數(shù)'],
['所以', '這', '里', '是', '1號', '也就是奇數(shù)'],
[0,1,2,3,4],
[-1, -2, -3, -4]
];
Nilai yang dijangkakan ialah 這里是0號數(shù)組當(dāng)然是偶數(shù)
和 0,1,2,3,4
Berikut ialah kod ujian:
var res = getAllEvens(testArr);
console.log('數(shù)組:', res);
console.log('合并:', res.join(','));
Hasilnya seperti dalam gambar
Pendapatan yang dijangka, yakin ia boleh dilaksanakan.
Beberapa mata ilmu
MDN - penapis untuk tatasusunan
MDN - kurangkan untuk tatasusunan
MDN - fungsi anak panah
var array = [1,2,3,4];
for (var i=0;i<array.length;i++){
if (i%2==0) {
console.log(array[i]);
}
}
var array = [1,2,3,4];
var result = array.filter(function(index, value){
if (index%2==0) {
return true;
}
});
console(array);
console(result);
Bantu anda hanya melaksanakan fungsi
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]