2017-07-18 3 views
-3

Ich habe mit dieser Funktion zu sehen, ob eine bestimmte Zahl in einem Array von Zahlen ist. Wenn es so ist, sollte es wahr oder falsch zurückgegeben werden. Ich habe dieses Stück Code, das unten perfekt funktioniert. Allerdings könnte man es noch mehr (zB Vermeidung einer for-Schleife und stattdessen forEach verwenden?) VereinfachenforEach anstelle von Schleife

Dank

function findNumber(number){ 
    for (var i=0;i<array.length;i++){ 
    if (array[i] === number){ 
    return true } 
    } 
    return false 
    } 
+1

Das sieht nicht wie funktionale Programmierung für mich aus. – jsheeran

+0

'array.includes (number)' – zerkms

+0

So viele Möglichkeiten, das Gleiche zu tun –

Antwort

-2
// I guess var array is already declared 
    function findNumber(number){ 
    let test = false 
    array.forEach(function(nbr){ 
     if(nbr ==(=) number){ 
      test = true 
     }  
    }) 
    if(test == true) { 
     return true 
    } else { 
     return false 
     } 
    } 
+0

'Uncaught ReferenceError: forEach ist nicht definiert' – Quentin

+0

Mein Fehler, ich habe einen Fehler gemacht, ich ändere ihn –

+2

Es ist ein großartiger Cargo-Kult-Programmierbeispiel. – zerkms

1

Etwas, das semantisch, um Ihren Code ähnlich ist und „functional sieht“ könnte be:

const findNumber = number => array.includes(number); 

Es gibt wirklich keinen Grund, Array.prototype.forEach zu verwenden. Und um ehrlich zu sein, wird der Array.prototype.forEach in einem "wirklich funktionalen Stil" fast nie benutzt (da sein Zweck ist, Nebenwirkungen zu machen, und das ist, was Sie versuchen, mit FP zu vermeiden).

Referenzen:

+0

honorable mention: 'Array.prototype.find' – naomik

0
function findNumber(arr, number){ 

var result = false; 

arr.forEach(function(item, index){ 

    if(item === number) result = true; 
}); 

return result; 

}

Btw. Ich denke, es wäre einfacher und einfacher, einfach Array.prototype.indexOf() oder Array.prototype.includes() Methoden zu verwenden.