Récursive réduire en JavaScript
-
09-10-2019 - |
Question
Je suis tout à fait nouveau pour JavaScript et ne comprennent pas que quelques-uns de ses comportements. Je veux écrire une version récursive de réduire la fonction trouvée dans le livre de Eloquent JavaScript. C'est mon code:
function rec_reduce( fn, base, list ) {
if( list.length === 0 ) {
return base;
}
else {
rec_reduce( fn, fn( base, list[ 0 ] ), list.slice( 1 ) );
}
}
print( rec_reduce( Math.min, 100, [ 5, 3, 7, 2, 6, 5 ] ));
Le résultat était:
undefined
Pour voir ce qui se passe je mets:
print( base );
en tant que première ligne de la fonction et le résultat était:
100
5
3
3
2
2
2
undefined
quelqu'un whould me expliquer pourquoi?
La solution
Dans ce bloc else
, vous devrez
return rec_reduce( ... )
Autres conseils
Une autre façon de le faire:
reduce_file.js:
function reduce(arr, func, initv){
if(arr.length) return reduce(arr.slice(1), func, func(initv, arr[0]))
else return initv
}
module.exports = reduce
et puis vous l'utilisez comme:
reduce = require('./reduce_file.js')
console.log(reduce([1,2,3,4], function(prev, curr) {
return prev + curr
}, 0))
résultat:
10
de 1 + 2 + 3 + 4 = 10
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow