108 votes

Obtenir le nombre total d'éléments sur un objet Json ?

Duplicata possible :
Longueur d'un objet Javascript (par exemple, un tableau associatif)

J'ai un objet similaire à celui-ci :

var jsonArray = {
  '-1': {
    '-1': 'b',
    '2': 'a',
    '10': 'c'
  },
  '2': {
    '-1': 'a',
    '2': 'b',
    '10': 'a'
  },
  '5': {
    '-1': 'a',
    '2': 'a',
    '10': 'b'
  }
};

J'essaie d'obtenir sa longueur, le problème est que jsonArray.length renvoie 5 au lieu de 3 (qui est le total des éléments qu'il possède). Le tableau est relativement long (1000x2000 éléments) et cette opération doit être effectuée plusieurs fois par seconde. Comment puis-je obtenir le nombre d'éléments de manière plus efficace ?

173voto

NT3RP Points 6566

En plus de la réponse de kieran, apparemment, les navigateurs modernes ont une fonction Object.keys fonction. Dans ce cas, vous pourriez faire ceci :

Object.keys(jsonArray).length;

Plus de détails dans cette réponse sur Comment lister les propriétés d'un objet javascript

20voto

Alexander Points 13227

C'est un objet et vous voulez compter les propriétés de celui-ci.

Object.keys(jsonArray).length

Références :

6voto

kieran Points 1527

C'est votre code actuel ? Un objet javascript (ce que vous nous avez donné) n'a pas de propriété de longueur, donc dans ce cas-ci exampleArray.length retourne undefined au lieu de 5.

Ce stackoverflow explique les différences de longueur entre un objet et un tableau, et ce stackoverflow montre comment obtenir la "taille" d'un objet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X