comment les clés de sortie dans une paire de valeurs clés dans les tableaux imbriqués à l'aide du constructeur Javascript

voix
0

Au sein du tableau de tableau « articles » Je voulais sortie dans le « info » , seules les touches: [ 'stringTwo', 'StringThree' ] et la valeur également sortieString Three

let items = [
  {
    string: 'string1',
    info:
    {
      stringTwo:'String Two',
      stringThree: 'String Three'
    },
    size:3445
  },
  {
    string: 'string2',
    info: 'ruby files'
  },
  {
    string: 'string3',
    info: ''
  },
  {
    string: 'string4 without info key',
  }
];

J'ai essayé avec ces deux codes:

data.forEach((data) => {
  if(data.info.constructor === Object) {
    console.log(Object.keys(data.info));
  }
})

data.forEach((data) => {
  if(data.info.constructor === Object) {
    console.log((data.info.stringThree));
  }
})

le premier doit délivrer les clés [ 'stringTwo', 'StringThree' ] et la deuxième sortie devraitString Three

Je me demande pourquoi dans un tableau d'échelle plus grande qui a plus de paires clé-valeur à la fois ne me fonctionne pas et donne une entrée TypeError: Cannot read property 'constructor' of undefined? le cas échéant d' autres moyens sont là sans utiliser le constructeur?

Créé 07/11/2018 à 20:22
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

Votre plus grand réseau d'échelle probablement ne pas de infoclé. Pour éviter d' avoir une erreur, vous devez:

  • Changez vos articles tableau pour mettre la infoclé, même vide

    ou

  • Ajouter un typeof data.info !== "undefined" état pour vérifier si la infoclé est définie sur chaque élément avant d' essayer d'y accéder.

Voici un exemple de travail:

let items = [
  {
    string: 'string1',
    info:
    {
      stringTwo:'String Two',
      stringThree: 'String Three'
    },
    size:3445
  },
  {
    string: 'string2',
    info: 'ruby files'
  },
  {
    string: 'string3',
    info: ''
  },
  {
    string: 'string4 without info key',
  }
];


items.forEach((data) => {
  if(typeof data.info !== "undefined" && data.info.constructor === Object) {
    console.log(data.info.stringThree);
  }
})

Créé 07/11/2018 à 20:35
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more