Maison  >  Article  >  interface Web  >  Pourquoi ma fonction « forEach » renvoie-t-elle « non défini » en JavaScript ?

Pourquoi ma fonction « forEach » renvoie-t-elle « non défini » en JavaScript ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-11 17:06:031006parcourir

Why Does My `forEach` Function Return `undefined` in 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!

Déclaration:
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