2016-09-22 2 views
0
私はトラブルが次のようなコードのブロック内のキー値を取得して過ごしてい

Javascriptが - オブジェクトのキーを取得するオブジェクトは、オブジェクトの配列であるとき

var someArray = []; 
someArray.push(objX, objY, objZ); //each of these objects pushed in have 1 key/value pair 

for (var i = 0; i < someArray.length; i++) { 
    switch (Object.keys(someArray[i][0])) { //Not sure that "[i][0]" is valid? 
     //now set tags using Jquery 
    } 
} 

は、したがって、上記のコード例では、私が渡していますオブジェクトの配列(各オブジェクトは単一のキーと値のペアです)。それぞれのキーを取得したいので、Jqueryを使用してそれぞれに対応するHTMLタグを設定できます。

思想:各オブジェクトのキーの配列はすべて1になるので、[i]だけで十分でしょうか?

ご協力いただければ幸いです!

答えて

2

各オブジェクトに1つの列挙可能なプロパティがある場合は、Object.keys(someArray[i])[0]を使用してループ内のそのプロパティの名前を取得できます。 Object.keysは、オブジェクト自身の列挙可能なプロパティ名の配列を返し、[0]は最初のエントリを取得します。 (。そしてもちろん、someArray[i][theName]はあなたにそのプロパティの値を与える)

例:

var objX = { 
 
    x: "ecks" 
 
}; 
 
var objY = { 
 
    y: "why" 
 
}; 
 
var objZ = { 
 
    z: "zee" 
 
}; 
 
var someArray = []; 
 
someArray.push(objX, objY, objZ); 
 

 
for (var i = 0; i < someArray.length; i++) { 
 
    var arrayEntry = someArray[i]; 
 
    var name = Object.keys(arrayEntry)[0]; 
 
    console.log(name + " is " + arrayEntry[name]); 
 
}

+1

私は間違いなくこの問題を思っていました...これはうまくいきました。 – codeglove26

+0

@ codeglove26: 'Object.keys(someArray [i] [0])'は* close *です。 :-) –

0

実際のオブジェクトとして配列内のオブジェクトを使用してください。

var objX = {key: 'one', value: 'oneValue'}; 
var objY = {key: 'two', value: 'twoValue'}; 
var objZ = {key: 'three', value: 'threeValue'}; 

var someArray = []; 
someArray.push(objX, objY, objZ); //each of these objects pushed in have 1 key/value pair 

for (var i = 0; i < someArray.length; i++) { 
    var obj = someArray[i]; 
    var key = obj.key; 
    var value = obj.value; 
} 
関連する問題