Maison > interface Web > js tutoriel > Pourquoi « forEach » renvoie-t-il « undefined » même avec une instruction « return » à l'intérieur de la fonction d'itération ?

Pourquoi « forEach » renvoie-t-il « undefined » même avec une instruction « return » à l'intérieur de la fonction d'itération ?

Mary-Kate Olsen
Libérer: 2024-11-10 09:28:03
original
202 Les gens l'ont consulté

Why Does `forEach` Return `undefined` Even With a `return` Statement Inside the Iteration Function?

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"
    )
Copier après la connexion

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
Copier après la connexion

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]
Copier après la connexion

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 :

  • Au lieu de renvoyer la clé, vous souhaiterez peut-être renvoyer la valeur complète de l'objet correspondant à la clé.
  • L'utilisation de l'instruction break dans la fonction d'itération peut améliorer les performances, car elle quitte la boucle plus tôt lorsque la clé est trouvé.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal