Json コード
{
"pizza":
{
"pepperoni lovers":
{
"topping": "pepperoni",
"crust": "hand tossed"
},
"sausage lovers":
{
"topping": "sausage",
"crust": "hand tossed"
}
}
}
これをループして、配列に名前だけを入力するにはどうすればよいですか?
Json コード
{
"pizza":
{
"pepperoni lovers":
{
"topping": "pepperoni",
"crust": "hand tossed"
},
"sausage lovers":
{
"topping": "sausage",
"crust": "hand tossed"
}
}
}
これをループして、配列に名前だけを入力するにはどうすればよいですか?
for...in を使用して、オブジェクトのプロパティをループできます。
a = [];
for (n in pizza) {
a.push(n);
}
オブジェクトを反復処理する古典的な方法は、for .. inループを使用することです。
for (prop in obj) {
val = obj[prop];
}
この手法の考えられる副作用の 1 つは、特定の順序でプロパティを反復処理することが保証されないことです。プロパティ名が事前にわかっている場合は、プロパティ名の配列を作成して反復できます。
for .. inオブジェクトがネストされているため、完全に繰り返すには 2 つのループをネストする必要があります。
for (prop in obj) {
nested_obj = obj[prop];
for (nested_prop in nested_obj) {
nested_val = nested_obj[nested_prop];
}
}
すべてのプロパティ名の配列を取得するには、次のように配列を作成できます。
props = [];
for (prop in obj) {
props.push(prop);
nested_obj = obj[prop];
for (nested_prop in nested_obj) {
props.push(nested_prop);
nested_val = nested_obj[nested_prop];
}
}
jQuery、正しいオブジェクトを想定
var pizzaNames=[],
data = { "pizza" : {
"pepperoni lovers":
{
"topping": "pepperoni",
"crust": "hand tossed"
},
"sausage lovers":
{
"topping": "sausage",
"crust": "hand tossed"
}
}
}
// $.each is IE8 compatible, Object.keys is not
$.each(data.pizza,function(name,val) {
pizzaNames.push(name);
});