web-dev-qa-db-fra.com

JavaScript - créer un objet et utiliser une variable pour le nom de la propriété?

Je crée mon propre objet:

gridObject = new Object();

J'utilise ensuite jquery pour extraire le contenu des balises d'élément de liste, qui sont elles-mêmes remplies de

balises qui ont des noms de classe spécifiques:

<li row="1"><p class="department" rowitem="department">Photography</p>...</li>

Je les tire en utilisant ce code:

//make object from results
gridObject = new Object();

//get all the rows
var rowlist = $('li[row]');

for(var r=0; r<rowlist.length; r++) {

    //make gridObject row element here

    //get the row content
    var thisrow = $(rowlist[r]).html();

    //get all the p tags
    var rowitems = $(thisrow + 'p.[rowitem]');

    //get field name
    for(var ri=0; ri<rowitems.length; ri++) {
    if (r < 2) { //this is temporary just for testing
         var fieldname = $(rowitems[ri]).attr('rowitem');
         var fieldvalue = $(rowitems[ri]).html();
    }
    }

Je raccroche en passant ceci dans mon objet. Deux questions. Une propriété d'objet peut-elle être créée avec un nom de variable, comme ceci

griObject.fieldname = fieldvalue;

et les objets peuvent-ils avoir des relations parent/enfant tels que:

gridObject.r.fieldname = fieldvalue; 

dans ce cas, r et nom de champ seraient des variables. Ou devrais-je simplement travailler sur des tableaux associatifs pour obtenir quelque chose de similaire?

Ceci est en réponse à une question de suivi que j'ai postée ci-dessous, "existe-t-il un équivalent print_r en javascript" - vous pouvez utiliser l'itérateur, un peu plus de frappe mais fait l'affaire:

//loop through search data
var it = Iterator(filteritems); 
for(var pair in it) { 
    console.log("key:" + pair[0] + ", value:" + pair[1] + "\n");
}
41
PruitIgoe

Si vous souhaitez utiliser un nom de propriété de variable, utilisez la syntaxe d'indice:

var fieldname = 'test';

//These two lines are equivalent as long as fieldname is 'test':
gridObject[fieldname] = fieldvalue;
gridObject.test = fieldvalue
78
Skilldrick