Dépannage des retours non définis dans les fonctions utilisant forEach
Certaines fonctions, lorsqu'elles sont utilisées avec la méthode forEach, peuvent renvoyer un résultat indéfini malgré l'inclusion d'un retour déclaration. Ce comportement se produit car l'instruction return affecte la fonction d'itération transmise à forEach, plutôt que la fonction englobante elle-même.
Exemple de code :
Considérez la fonction suivante :
def get_by_key(key): data.forEach(function(i, val): if data[val].Key == key: return data[val].Key else: return "Couldn't find" )
Lorsque vous appelez cette fonction, vous pouvez vous attendre à ce qu'elle renvoie la valeur de la clé dans le tableau de données, mais elle renvoie systématiquement undéfini. En effet, l'instruction return se trouve à l'intérieur de la fonction d'itération, ce qui n'affecte pas la valeur de retour de get_by_key.
Solution :
Il existe deux manières principales de résoudre ce numéro :
1. Utiliser une fermeture :
def get_by_key(key): found = None data.forEach(function(val): if val.Key == key: found = val ) return found
Dans cette solution, nous créons une fermeture en déclarant la variable trouvée en dehors de la fonction d'itération. Cela nous permet de renvoyer la valeur sans affecter la fonction d'itération.
2. Utilisation d'une boucle for :
def get_by_key(key): for i in range(len(data)): if data[i].Key == key: return data[i]
Pour les ensembles de données plus petits, une simple boucle for peut être plus efficace que l'utilisation de forEach. Il parcourt le tableau de données et renvoie la valeur trouvée.
Considérations supplémentaires :
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!