Подтвердить что ты не робот

JavaScript - создание объекта и использование переменной для имени свойства?

Я создаю свой собственный объект:

gridObject = new Object();

Затем я использую jquery, чтобы вытащить содержимое тегов элементов списка, которые сами заполнены тегами

которые имеют определенные имена классов:

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

Я использую этот код:

//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();
    }
    }

Я повесил трубку, передавая это в свой объект. Два вопроса. Можно ли создать свойство объекта с именем переменной, например

griObject.fieldname = fieldvalue;

и могут иметь объекты родительские/дочерние отношения, такие как:

gridObject.r.fieldname = fieldvalue; 

в этом случае оба r и fieldname будут переменными. Или я должен просто работать с ассоциативными массивами для достижения чего-то подобного?

Это ответ на следующий вопрос, который я разместил ниже, "есть ли эквивалент print_r в javascript" - вы можете использовать итератор, немного больше набирать текст, но делает трюк:

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

Ответ 1

Если вы хотите использовать имя свойства переменной, используйте синтаксис подстроки:

var fieldname = 'test';

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