0
votes

Comment puis-je vérifier si l'objet contient une clé certaine?

Ceci est mon objet DATA CODE>:

if (data.hasOwnProperty("category")) {
console.log("data contains category");
}else {
  console.log("data does not contain category");
}


5 commentaires

Vous avez un tableau, pas un objet. Si vous devez avoir un objet, vous devez regarder la source de Data .


@Devon. Il doit s'agir d'un objet, car si je alerte (data.tostring (,tostring ()); ceci est le iPUT: [objet objet], [objet objet], [objet objet], [objet], [objet Objet], [objet objet], [objet objet], [objet d'objet]


Il a [] autour d'un objet; C'est un tableau avec un objet dedans.


@Jarla, ce n'est probablement pas le moyen le plus simple de voir les données, d'utiliser votre console, pas des alertes. Au-delà de cela, vous avez un éventail de plusieurs objets de l'apparence de cela, pas un seul objet. Je pense que le problème est que vous attendez un seul objet lorsque vous avez un tableau d'objets. Si le producteur est faux ou si l'attente du consommateur est fausse, c'est à vous de comprendre.


@Devon merci, je suis toujours confondu avec cette question ... est-ce un objet ou est-ce un tableau?


4 Réponses :


2
votes

Vous devez itérer votre tableau. Vous pouvez donc mettre le code à l'intérieur d'un foreach code>

p>

let data = [{
  id: 1,
  name: "Cat",
  category: {
    id: 2,
    name: "Animals"
  }
}]


if (data[0].hasOwnProperty("category")) {
  console.log("data contains category");
} else {
  console.log("data does not contain category");
}


0 commentaires

1
votes

Vous pouvez également utiliser Certains code> pour vérifier si un objet de votre réseau correspond à une certaine condition:

p>

var data = [{
  id: 1,
  name: "Cat",
  category: {
    id: 2,
    name: "Animals"
  }
}];

var hasCategory = data.some(k => k.hasOwnProperty('category'));

if (hasCategory) {
  console.log("data contains category");
} else {
  console.log("data does not contain category");
}


0 commentaires

1
votes

Vous devez faire boucle via des éléments de tableau. et vous pouvez assignation de destructure forte>

let arr = [{id:1, name:"Cat", category:{id:2, name:"Animals"}}]

arr.forEach(({category})=>{
  if (category !== undefined) {
   console.log("data contains category");
  }else {
   console.log("data does not contain category");
  }
})


3 commentaires

Juste une note latérale, si catégorie est défini sur null , 0 ou une autre valeur de FALSY, votre code actuel affichera: Les données ne contiennent pas de catégorie . Peut-être que vous pouvez améliorer la modification de la condition de coffre à catégorie! == indéfini .


@Codemaniac vous êtes les bienvenus. J'espère que votre vote de descente est retourné, n'était pas mon intention que vous soyez voté, désolé pour cela.


@Shidersz pas de problème mate :) vote en bas ne me dérange pas. seul motif est d'apprendre.



0
votes

C'est un tableau avec un seul index, vous pouvez donc le faire à l'aide de l'opérateur dans code>: xxx pré>

si vous avez plus d'un index, vous devez boucler ce tableau. p>

l'opérateur in code> vérifie également les propriétés héritées. em> p>

p>

let data = [{id:1, name:"Cat", category:{id:2, name:"Animals"}}];
data.forEach((o, i) => console.log("Index:", i, " - Has category?:", "category" in o));


0 commentaires