ここに私が運動していたマッピング関数があります。.filter()関数をJavaScriptで再帰的に表現するには?
var list = [1,2,3,4,5];
function isOdd(v) {
return v % 2 == 1;
}
function exclude(arr, fn) {
var myList = [];
for (var i = 0; i < arr.length; i++) {
if (fn(arr[i])) {
myList.push(arr[i]);
}
};
return myList;
}
私は、再帰的な解決策でforループを交換したいが、私は、私は再帰でそれを解決することができますどのようにライン2で各関数呼び出しで新しいリストを開始して以来、それは適切な配列を生成しないのですか?ここに私が得た最も近いものがあります。
function exclude(arr, fn) {
let myList = [];
if (arr.length = 1) {
if (fn(arr[0])) {
return myList.push(arr[0]);
}
} else {
return myList.push(exclude(arr.slice(1), fn));
}
}
console.log(exclude(list, isOdd));
'list.filter(isOdd)'を使いたくない理由はありますか? –