Trouvez la valeur dans le tableau puis renvoyez true avec Angular forEach
Je suis en train d'apprendre le JavaScript et AngularJS.
Quelle est la différence entre ce code?
function isInArrayNgForeach(field, arr) {
angular.forEach(arr, function(value, key) {
if(field == value)
return true;
});
return false;
} //This returns always false
function isInArrayJavaScript(field, arr) {
for(var i = 0; i < arr.length; i++) {
if(field == arr[i])
return true;
}
return false;
} //This works fine
function isInArray() {
var testArr = ['stack', 'over', 'flow'];
console.log(isInArrayNgForeach('stack', testArr)); //return false
console.log(isInArrayJavaScript('stack', testArr)); //return true
}
Ma question est: pourquoi isInArrayNgForeach toujours revenir faux? Je suppose que parce qu'il n'y est une fonction à l'intérieur de la fonction, mais je ne sais pas pourquoi.
source d'informationauteur Kimchi Man
Vous devez vous connecter pour publier un commentaire.
La première option est différent parce que
return true;
retourne à partir de la fonction qui est passé comme paramètre àforEach
fonction non pas de l'extérieur de la fonctionisInArrayNgForeach
et c'est pourquoi la dernière lignereturn false;
est appelé à toujours lorsque le forEach finitions. Ce qui rend la fonction retourne false toujours.Si vous modifiez le code comme ceci, tt va rendement résultat attendu:
Pour le faire fonctionner comme vous le souhaitez à
En fonction
isInArrayNgForeach
vous êtes de retourtrue
à la fonction anonyme donnée àforEach
. Il n'irez jamais àisInArrayNgForeach
. Et enfin, vous ditesreturn false
qui sera toujours renvoyée.C'est comme
Si vous voulez obtenir ce que vous faites dans votre deuxième fonction, le javascript natif
some
va vous aider.Pour les primitives vous pourriez toujours utiliser de tableau.indexOf...