View Full Version : [JS] Conteggio degli Zeri
legolas93
28-12-2011, 18:58
Ragazzi so che è stupido stupido come programma ma sto imparando.. e non capisco dov'è l'errore :cry:
function forEach(array, action) {
for (var i = 0; i < array.length; i++)
action(array[i]);
}
var base=0;
function reduce(combine, base, array) {
forEach(array, function (element) {
base = combine(base, element);
});
return base;
}
function countZeroes(numeri){
return reduce(function (a, b){if (b===0) {a=a+1; return a;}}, 0, numeri);
}
alert(countZeroes([0,23,0,23,4,0,0,4]));
In pratica dovrebbe contare gli 0 nell'ultimo array.
Avete qualche idea?..Continua a restituirmi Undefined :muro: :muro:
Gimli[2BV!2B]
28-12-2011, 23:09
Controlla return a;
legolas93
29-12-2011, 19:34
;36629680']Controlla return a;
function forEach(array, action) {
for (var i = 0; i < array.length; i++)
action(array[i]);
}
var base=0;
function reduce(combine, base, array) {
forEach(array, function (element) {
base = combine(base, element);
});
return base;
}
function countZeroes(numeri){
return reduce(function (a, b){if (b===0) {return a+1;}}, 0, numeri);
}
show(countZeroes([0,23,0,23,4,0,0,4]));
Ho modificato leggermente ma non ho ancora risolto l'errore. L'alert continua a visualizzarmi "Undefined".
Potresti essere più preciso? :)
Grazie!
Gimli[2BV!2B]
29-12-2011, 19:42
Si tratta di una subdola stupidata: non ritorni sempre qualcosa, il return è annidato in una graffa di troppo.
La funzione anonima passata a reduce finisce per "ritornare" undefined tutte le volte che non incontra uno zero.function forEach(array, action) {
for (var i = 0; i < array.length; i++)
action(array[i]);
}
var base=0;
function reduce(combine, base, array) {
forEach(array, function (element) {
base = combine(base, element);
});
return base;
}
function countZeroes(numeri){
return reduce(function (a, b){if (b===0) {a=a+1; } return a; }, 0, numeri);
}
alert(countZeroes([0,23,0,23,4,0,0,4]));
legolas93
29-12-2011, 20:40
;36635102']Si tratta di una subdola stupidata: non ritorni sempre qualcosa, il return è annidato in una graffa di troppo.
La funzione anonima passata a reduce finisce per "ritornare" undefined tutte le volte che non incontra uno zero.function forEach(array, action) {
for (var i = 0; i < array.length; i++)
action(array[i]);
}
var base=0;
function reduce(combine, base, array) {
forEach(array, function (element) {
base = combine(base, element);
});
return base;
}
function countZeroes(numeri){
return reduce(function (a, b){if (b===0) {a=a+1; } return a; }, 0, numeri);
}
alert(countZeroes([0,23,0,23,4,0,0,4]));
Ahh.. :D In pratica JS restituisce "Undefined" se non incontra un return. Mi mancava questa conoscenza e quindi facevo fatica ad identificare la graffa posizionata male.
Sei un grande. Grazie :)
Gimli[2BV!2B]
29-12-2011, 20:57
Prego, in tutti i casi complimenti per la follia di questa conta :)
Tra l'altro la variabile base contemporaneamente globale ed argomento mi fa un po' deragliare la psiche... non ho ancora afferrato al 100% che strada segue, però funziona.
Edit: ok, funziona anche eliminando base globale, ora mi sento più sollevato...
legolas93
30-12-2011, 19:31
;36635630']Prego, in tutti i casi complimenti per la follia di questa conta :)
Tra l'altro la variabile base contemporaneamente globale ed argomento mi fa un po' deragliare la psiche... non ho ancora afferrato al 100% che strada segue, però funziona.
Edit: ok, funziona anche eliminando base globale, ora mi sento più sollevato...
Nono tranquillo!..Quello era solo un rimasuglio di un mio test..Per cercare di capire dove veniva fuori Undefined :)
Solo che ora ho un altro problema che mi fa deragliare veramente..ma apro un altro thread. :read:
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.