-1
votes

Pourquoi la fonction renvoie-t-elle non définie au lieu de l'élément donné?

J'essaie de résoudre le problème ci-dessous:

If the array is empty, it should return undefined.
If n is out of range, it should return undefined.
If the property at the given key is not an array, it should return undefined.
If there is no property at the key, it should return undefined.


5 commentaires

Avez-vous des exemples de données?


Pouvons-nous ignorer les backslashes et les trois premiers caractères?


Cette boucle n'a aucun sens. Il suffit d'utiliser retour obj [clé] [n] ?


J'ai enlevé les commentaires et j'ai supprimé les trois premiers caractères. Également fourni une réponse en bas.


De plus, je ne suis pas sûr de savoir pourquoi les barres anti-backs ont été ajoutées là-bas. J'ai copié et collé directement de la console.


3 Réponses :


0
votes

s'avère que, au lieu d'un pour une boucle, j'ai besoin d'utiliser une boucle régulière.

function getNthElementOfProperty(obj, key, n) {
    if(obj[key] === undefined){
      return undefined
    } else if(Array.isArray(obj[key]) === false){
      return undefined
    } else if(obj[key].length === 0){
      return undefined
    }
    for(var i = 0; i < obj[key].length; i++){
        if(i === n){
            return obj[key][i]
        }
    }
    return undefined;
  };


1 commentaires

Pourquoi utilisez-vous une boucle? Accès à un index en dehors d'un retour de tableau non défini .



2
votes

Enlevez simplement la boucle. JavaScript retourne non défini si l'index n'est pas à l'intérieur du tableau. Vous pouvez également vous débarrasser de si (array.length === 0) car l'index ne peut pas être à l'intérieur d'une matrice de longueur 0. xxx

si vous Voulez-vous savoir pourquoi votre boucle n'a pas fonctionné:

pour (let i in matry) attribue l'index sous forme de chaîne à i . Le === Opérateur vérifie les types et voit que '0'! == 0 par exemple.


1 commentaires

J'ai compris. De plus, la déclaration de retour que vous m'avez donné devrait être de retour Obj [clé] [n].



0
votes

Fonction simple avec toutes la validation Pas besoin de boucle, vous pouvez utiliser hasowroperty au lieu de obj [clé] === indéfini xxx < / p>


0 commentaires