3 votes

Comment obtenir le nombre de tableaux dans un objet JSON ?

Voici mon JSON. Je veux obtenir le numéro et le nom du ou des tableaux dans cet objet. Cet objet est créé dynamiquement et je ne connais pas son numéro et son nom. Il y a 2 tableaux dans cet exemple, nommés Table et Table1.

"{
      "Table": [
        {
          "Day": "Jan",
          "Counts": 20,
          "SrNo": 1,
          "Title": "test2",
          "ProfilePic": "/Image1.jpg" 
        },
        {
          "Day": "Feb",
          "Counts": 10,
          "SrNo": 2,        
          "Title": "test2",
          "ProfilePic": "/Image1.jpg"          
        }
    ],
 "Table1": [
    {
      "Day": "01",
      "Counts": 5,
      "SrNo": 1,       
      "Title": "test3",
      "ProfilePic": "/Image2.jpg"
     },
     {
      "Day": "02",
      "Counts": 9,
      "SrNo": 2,        
      "Title": "test3",
      "ProfilePic": "/Image2.jpg",        
     }
   ]
 }"

10voto

Binary Brackets Points 436

Essayez le code mentionné ci-dessous,

Object.keys(jsonObject).length;

Se référer aussi... : Obtenir le nombre total d'éléments sur un objet Json ?

Pour obtenir tous les noms :

var keys = Object.keys(jsonObject); // this will return root level title ["Table" , "Table1"]

4voto

Rory McCrossan Points 69838

En supposant que chaque propriété de l'objet contient un tableau, vous pouvez simplement compter le nombre de propriétés en utilisant la méthode suivante Object.keys comme ceci :

var arrayCount = Object.keys(obj).length;

Alternativement, si vous voulez déterminer le type de la propriété, au cas où il y aurait d'autres types dans l'objet, vous devez boucler et vérifier chaque propriété individuellement, ce qui peut être fait en utilisant la méthode suivante filter() comme ça :

var obj = {
  "Table": [{
      "Day": "Jan",
      "Counts": 20,
      "SrNo": 1,
      "Title": "test2",
      "ProfilePic": "/Image1.jpg"
    },
    {
      "Day": "Feb",
      "Counts": 10,
      "SrNo": 2,
      "Title": "test2",
      "ProfilePic": "/Image1.jpg"
    }
  ],
  "Table1": [{
      "Day": "01",
      "Counts": 5,
      "SrNo": 1,
      "Title": "test3",
      "ProfilePic": "/Image2.jpg"
    },
    {
      "Day": "02",
      "Counts": 9,
      "SrNo": 2,
      "Title": "test3",
      "ProfilePic": "/Image2.jpg",
    }
  ],
  'NotArray1': 'foo', // < not an array
  'isArray': false // < not an array
}

var arrayCount = Object.keys(obj).filter(function(key) {
  return obj[key].constructor === Array;
}).length;
console.log(arrayCount);

1voto

Yosvel Quintero Points 10172

Vous pouvez utiliser Array.prototype.reduce() afin de retourner le total de toutes les valeurs des propriétés de l'objet qui sont des tableaux valides :

var obj = {
    "Table": [{
      "Day": "Jan",
      "Counts": 20,
      "SrNo": 1,
      "Title": "test2",
      "ProfilePic": "/Image1.jpg"
    }, {
      "Day": "Feb",
      "Counts": 10,
      "SrNo": 2,
      "Title": "test2",
      "ProfilePic": "/Image1.jpg"
    }],
    "Table1": [{
        "Day": "01",
        "Counts": 5,
        "SrNo": 1,
        "Title": "test3",
        "ProfilePic": "/Image2.jpg"
      }, {
        "Day": "02",
        "Counts": 9,
        "SrNo": 2,
        "Title": "test3",
        "ProfilePic": "/Image2.jpg"
      }
    ],
    "Table2": false
  },
  arrayCount = Object.keys(obj).reduce(function (acc, val) {
    return Array.isArray(obj[val]) ? ++acc : acc;
  }, 0);

console.log(arrayCount);

0voto

varatharajan Points 174

Dans un navigateur moderne, pour compter les tableaux dans un objet

Object.keys(obj).filter((e) => Array.isArray(obj[e])).length

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