Maison > Article > interface Web > Pourquoi ma fonction « forEach » renvoie-t-elle « non défini » en JavaScript ?
Fonction avec forEach renvoie un élément non défini
Code original :
Le code fourni définit une fonction , getByKey, destiné à rechercher une valeur spécifique dans un tableau d'objets et à renvoyer soit la clé correspondante, soit un message indiquant que la valeur est introuvable. Cependant, la fonction renvoie systématiquement undefined.
function getByKey(key) { data.forEach(function (i, val) { if (data[val].Key === key) { return data[val].Key; } else { return "Couldn't find"; } }); }
Comprendre le problème :
Le problème avec ce code réside dans la portée de l'instruction return dans la boucle forEach . L'instruction return quitte la boucle, pas la fonction getByKey elle-même. Pour renvoyer une valeur de la fonction, elle doit être placée en dehors de la boucle.
Solution :
Une façon de résoudre ce problème serait d'attribuer la valeur de retour à un variable à l'intérieur de la boucle, puis la renvoyer depuis la fonction.
function getByKey(key) { var result; data.forEach(function (val) { if (val.Key === key) { result = val.Key; } }); return result; }
Vous pouvez également utiliser une simple boucle for au lieu de forEach et revenir directement depuis la fonction dans la boucle.
function getByKey(key) { for (var i = 0; i < data.length; i++) { if (data[i].Key === key) { return data[i].Key; } } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!