Vérifier si un tableau JSON est vide
Je sais dès le premier regard, il sonne comme double question, mais je ne pense pas que c'est...
Je suis en recevant en retour un tableau JSON:
var test1 = [] ;
ou
var test2 = [{},{},{}] ; //This is empty
Je n'ai pas de problème à trouver si test1
est vide.
jQuery.isEmptyObject(test1)
Mon problème est avec le test2
...
Veuillez noter que dans certains cas, le test2 peut retourner quelque chose comme:
var test2 = [{"a":1},{},{}] ; //All these are not empty
var test2 = [{},{"a":1},{}] ; //All these are not empty
var test2 = [{},{},{"a":1}] ; //All these are not empty
Les scénarios ci-dessus ne devraient pas être comptés comme vide.J'ai essayé d'utiliser .length
mais ce n'est pas les aider que de la longueur est toujours de 3... des idées?
Acclamations.
Vous dites qu'il doit retourner true si le tableau est vide ou que le tableau ne contient que des objets sans les clés?
Pourquoi ne pas utiliser cette instruction if:
+1 Evan, si vous utilisez .la longueur d'un objet, vous obtenez juste une erreur undefined . @ Evan Trimboli, j'ai juste besoin de capturer le scénario ont été test2 est [{},{},{}]
Pourquoi ne pas utiliser cette instruction if:
test2[0].length===0&&test[1].length===0&&test[2].length===0
je sais qu'il s brut mais quelle que soit lalength
n'est pas une propriété valide sur un objet.+1 Evan, si vous utilisez .la longueur d'un objet, vous obtenez juste une erreur undefined . @ Evan Trimboli, j'ai juste besoin de capturer le scénario ont été test2 est [{},{},{}]
OriginalL'auteur Thanos | 2013-08-23
Vous devez vous connecter pour publier un commentaire.
jsFiddle Démo
Passe de tous vos tests.
Un pur JavaScript solution serait de remplacer
!jQuery.isEmptyObject(el)
avecObject.keys(el).length !== 0
Edit: À L'Aide De Tableau.le prototype.chaque
OriginalL'auteur c.P.u1
Pour ceux qui jouent à la maison, non jQuery solution:
OriginalL'auteur Evan Trimboli
J'ai eu le même problème, et je viens avec cette solution sans jQuery:
OriginalL'auteur kunde
Sans JQuery: à l'aide de
Array.filter
le1 etObject.keys
le2:mise à jour 2018 Flèche fonctions sont désormais pris en charge par tous les navigateurs, donc, comme himel-nag-rana contraire, vous pouvez également utiliser:
le1 Plus d'infos
le2 Plus d'infos (liens contiennent des cales pour les anciens navigateurs)
Object.keys
etArray.filter
.plus version plus courte avec une flèche fonction
isJSONArrayEmpty(obj) { return !obj.length || !obj.filter(a => Object.keys(a).length).length; }
Je suis assez sûr flèche fonctions n'étaient pas ou que partiellement mis en œuvre dans la plupart des navigateurs de retour en août 2013
oui bien sûr, c'est venu beaucoup plus tard. Mais de mon point de ajoutant des ce était juste pour ajouter à la solution de sorte que lorsque les devs à partir de 2018 vient qu'ils obtiennent une plus courte/version mise à jour. Rien d'autre. 🙂
OriginalL'auteur KooiInc
Assez simple...
Ouais j'ai été paresseux, mais vous pourriez très facilement mise en œuvre dans une boucle.
OriginalL'auteur Ch33f
Peut-être que vous pourriez essayer d'utiliser la fonction comme
OriginalL'auteur Eadel
Voici mon point de vue: tournez le tableau dans un ensemble et de vérifier la taille.
OriginalL'auteur tarikki
vérifier en faisant une boucle avec chacune des valeurs de la série et de retour d'erreur
Essayez
désolé mise à jour..a condition
OriginalL'auteur Arun Bertil