Frage


Ich bin ganz neu in JavaScript und verstehen nicht, einige seiner Verhaltensweisen. Ich möchte Funktion eine rekursive Version reduziert in Eloquent JavaScript Buch gefunden schreiben. Das ist mein 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 ] ));

Das Ergebnis war:

undefined

Um zu sehen, was los ist ich gesagt:

print( base );

als erste Zeile der Funktion und das Ergebnis war:

100
5
3
3
2
2
2
undefined

whould mir jemand erklären, warum?

War es hilfreich?

Lösung

In diesem else Block, haben Sie auf

return rec_reduce( ... )

Andere Tipps

Eine andere Möglichkeit, es zu tun:

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

und dann verwenden Sie es als:

reduce = require('./reduce_file.js')
console.log(reduce([1,2,3,4], function(prev, curr) {
  return prev + curr
}, 0))

Ergebnis:

10 

von 1 + 2 + 3 + 4 = 10

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top