I reçoivent initialement une réponse AJAX de {"B":{"1":"100","3":{"AA":256}},"A":100}
et converti en un objet javascript:Comment supprimer récursivement des objets imbriqués contenant un tableau vide?
var jsonOBJ = {};
jsonOBJ = jQuery.parseJSON(data);
réponses avenir peut être des sous-ensembles ou des sur-ensembles de la première réponse. Si la valeur d'une table est inchangée sur le serveur, les données stagnantes sont remplacées par un tableau vide. Exemple:
{"B":{"1":"90","2":200,"3":[]}}
{"B":[],"A":20}
Everytime une réponse AJAX est reçue, l'objet est mis à jour avec:
jQuery.extend(true, jsonOBJ, jQuery.parseJSON(data));
Mais je dois l'objet javascript pour garder les parties inchangées, donc je besoin de se retrouver avec un objet qui serait équivalent à ce qui suit avec les exemples de réponses ci-dessus:
jsonOBJ = jQuery.parseJSON('{"B":{"1":"90","2":200,"3":{"AA":256}},"A":20}');
Mon option préférée serait de supprimer les objets vides de la réponse convertie. Existe-t-il une fonction existante ou une modification de la fonction d'extension jQuery qui le ferait?
Je vois votre définition, mais quand la méthode serait pas exister? – shaun5
@ shaun5 - Les anciens navigateurs n'ont pas 'Array.isArray()' intégré donc nous nous assurons qu'il est défini même pour eux sans le remplacer s'il existe déjà. – jfriend00
@ shaun5 - Ajouté jsFiddle de travail: http://jsfiddle.net/jfriend00/U6qMH/ – jfriend00