web-dev-qa-db-ja.com

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

これをオブジェクトに渡すとハングアップします。 2つの質問。オブジェクトプロパティは、次のように変数名で作成できますか

griObject.fieldname = fieldvalue;

また、オブジェクトに次のような親子関係を持たせることもできます。

gridObject.r.fieldname = fieldvalue; 

この場合、rとfieldnameの両方が変数になります。または、同様のことを達成するために連想配列を使用するだけですか?

これは、私が以下に投稿した「javascriptにprint_rに相当するものがあるか」というフォローアップの質問に対する答えです。イテレーターを使用できます。

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

変数プロパティ名を使用する場合は、添え字構文を使用します。

var fieldname = 'test';

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