2016-05-17 5 views
-2

Ich versuche nicht, eine Schleife zu verwenden als Im üben Karte, Filter usw. und frage mich, warum mein Code nicht funktioniert?Verwenden von Karte, um nach True oder False zu suchen funktioniert nicht

function checking(array,item){ 
var temporary=true; 
array.map(function(x){ 
if (x!=item){ 
    temporary=false; 
} 

}); 
return temporary; 
} 

checking([1, 2, 3], 2); 
+0

Formatieren/indent Code. Warum verwenden Sie 'map', ohne etwas vom Callback zurückzugeben und nichts mit dem Ergebnis zu tun? Das ist die Semantik von forEach. Warum sollten Sie 'temporary' für jedes Element auf' false' setzen, wenn es nicht gleich der Eingabe ist? Und warum haben Sie das Problem nicht einfach gelöst, indem Sie Ihren Code im Debugger durchgegangen sind? wenn du 'map' und' filter' studierst, wie hast du 'einige' vermisst? –

Antwort

0

Weil Sie überprüfen nicht, ob zwei in Reihe ist, aber Sie überprüfen, ob Array einen anderen Wert als 2

hat, sollte Sie wether überprüfen, ob es dort zB:

let temporary=false; 
array.map(function(x){ 
if (x==item){ 
    temporary=true; 
} 
+0

nein, ich überprüfe, ob 2 in einem Array ist - das ist, wozu die Map-Funktion dient - um Elemente eines Arrays genau zu prüfen, nicht das Array selbst. – learningcoding

3

Warum nicht Array#some verwenden, es ist perfekt zum Überprüfen und Zurückgeben eines booleschen Wertes. Und das Beste ist der Kurzschluss, wenn die Callback-Rückgabe true ist.

function checking(array, item) { \t \t 
 
    return array.some(function (x) { 
 
     return x === item; 
 
    }); 
 
} 
 

 
document.write(checking([1, 2, 3], 2));

Verwandte Themen