2012-05-31 7 views
9

J'essaye de faire une boucle sur Json deux fois: une fois pour les éléments parents, puis à nouveau pour plus de détails. (Cela sera éventuellement exporté vers XML) En attendant, comment ajouter un tableau à un objet? , La solution est facileAjouter un tableau à l'objet

var XMLObject, XMLObjectDetail = []; 

$.each(data, function(index, element) { 
     XMLObject=new Object(); //or XMLObject = {}; 
     XMLObject.CardCode = element['CardCode'] 
     XMLObject.CardName = element['CardName']; 
     console.log(XMLObject); 

     XMLObjectDetail.push(XMLObject);//ADDED OBJECT TO ARRAY 

     //DON'T KNOW WHAT ARE YOU TRYING TO DO HERE? 
     $.each(element, function(key, value) { 
      XMLObjectDetail[[XMLObjectDetail.InvPayAmnt]] = value['InvPayAmnt']; 
     }); 
    }); 
+0

Voulez-vous ajouter l'objet au tableau ou l'inverse? – Bergi

+0

Je voudrais ajouter le tableau XMLObjectDetail à l'objet XMLObject. – MG1

+0

Quel nom de propriété doit-il obtenir dans XMLObject? – Bergi

Répondre

11

Après avoir éclairci votre demande dans les commentaires: Mon code actuel ne crée pas XMLObjectDetail

XMLObject = {}; 
var XMLObjectDetail = []; 

$.each(data, function(index, element) { 
     XMLObject.CardCode = element['CardCode'] 
     XMLObject.CardName = element['CardName']; 
     console.log(XMLObject); 

    $.each(element, function(key, value) { 
     XMLObject[[XMLObjectDetail.InvPayAmnt]] = value['InvPayAmnt']; 
     }); 
    }); 
+0

Merci d'avoir pris le temps de regarder mon code, comme vous pouvez le constater, je suis nouveau à travailler avec Json. Je vais vous donner un peu de contexte: ce code prend des données d'un csv (qui est constitué d'une exportation à partir d'un db), il doit ensuite l'afficher à l'utilisateur et lui permettre de faire certaines modifications. il clique sur un bouton, et il est converti en XML .Ceci est les exigences de mes clients – MG1

+0

La raison pour laquelle j'ai pensé faire une boucle deux fois est parce que quand il y a des lignes avec le même identifiant de fournisseur, ils doivent être regroupés et j'ai besoin – MG1

+0

Alors quelle partie de votre algorithme sont ces deux boucles? La sérialisation XML? Je pense que vous devriez le faire pour afficher la somme de certaines valeurs. poser une nouvelle question, en nous donnant des exemples de données (le JSON sérialisé, ou e CSV et votre toJSON-parser), ce que vous essayez de faire avec le code problématique et les erreurs que vous rencontrez. – Bergi

3

Si vous voulez ajouter des objets pour XMLObject à un tableau XMLObjectDetail faire comme ceci :

var XMLObject = {}; 
var XMLObjectDetail = []; 
XMLObject["XMLObjectDetail"] = XMLObjectDetail; 

vous pouvez le raccourcir à

var XMLObjectDetail, XMLObject = {XMLObjectDetail: XMLObjectDetail = []}; 

Cependant, je dois mentionner quelques défauts graves dans votre code:

XMLObject = {}; // no var keyword: the variable will be global 
var XMLObjectDetail = []; 

$.each(data, function(index, element) { 
    // I don't know how your data object/array looks like, but your code will be 
    // executed many times 
    // For each element, you will overwrite the properties 
    XMLObject.CardCode = element['CardCode'] // missing semicolon 
    XMLObject.CardName = element['CardName']; 
    // so that the final XMLObject will only contain cardcode and -name of the last one 
    // It will depend on your console whether you see different objects 
    // or the same object reference all the time 
    console.log(XMLObject); 

    // This part is completey incomprehensible 
    // you now loop over the properties of the current element, e.g. CardCode 
    $.each(element, function(key, value) { 
     // and again you only overwrite the same property all the time 
     XMLObject[[XMLObjectDetail.InvPayAmnt]] = value['InvPayAmnt']; 
     // but wait: The property name you try to set is very, um, interesting. 
     // first, XMLObjectDetail is still an (empty) Array and has 
     // no 'InvPayAmnt' property - leads to a undefined 
     // then, you build an Array with that [undefined] value as the only item 
     // OMG, an array? JavaScript does only allow strings as property names, 
     // so the array will be converted to a string - resulting to the empty string "" 
    }); 
}); 
+0

Désolé, une erreur a été corrigée. J'essaye de créer un objet avec un tableau à l'intérieur. XMLObject est l'objet principal et XMLObjectDetail est le tableau auquel j'affecte des valeurs dans la deuxième boucle. XMLObjectDetail doit être dans XMLObject. – MG1

+0

quel est votre graphique d'objet? ou comment sont structurés vos tableaux? est-ce que 'data' (dans la première construction' $ .each') contient plusieurs objets 'element'? est 'element' un objet ou un tableau (c'est' 'data' est un tableau de' element' array?) – TheVillageIdiot