0

私のJson配列は次のようになります。

var data =
{
    "categories": 
    {
        "category1": 
        {
            "Name": "Maps",
             "Id": 3,
             "orderInList": 1
        },
        "category2": 
        {
            "Name": "Books",
            "Id": 2,
            "orderInList": 2
        }
    }
};

do console.log(data)と書くと、オブジェクトの「キー」は次のようにフォーマットされます。

|         key           |    value  |

categories[category1][Id]     "3"

forループで(JQueryの$ .eachを使用せずに)これを反復処理して、どのキー、値のペアがNames、Id、またはorderInListであるかを判断するにはどうすればよいですか?

働くJsfiddle

4

3 に答える 3

1

外側のcategoriesオブジェクトは、多くの子オブジェクトを含むオブジェクトです。for...inループを使用して、これらの子オブジェクトを反復処理できます。

for (var category in data.categories) {
    // here you can access `category.Name`, `.Id`, and `.orderInList`
}
于 2012-08-13T13:17:21.800 に答える
1

このようなものが機能するはずです:

for (var category in data['categories']) {
    for (var key in data['categories'][category]) {
        var value = data['categories'][category][key];

        // Now do whatever you want based on key...
        switch (key) {
           case 'Name':
              // Whatever
              break;
           default:
              break;
        }
    }
}

いずれの場合も、内側のループのキーと値はネストされたオブジェクトのキーと値を保持し、categoryはカテゴリを保持します。

これについて潜在的に混乱するのは、Javascriptの配列値のようにオブジェクトのプロパティにアクセスできることです。

したがって、以下のコードを検討してください。

var some_object = {
    a: 0
};

// These two lines do the same thing, even though some_object is not an array.
some_object.a = 1;
some_object['a'] = 1;
于 2012-08-13T13:18:26.837 に答える
0

これをチェックアウト

var data = {
  "categories": {
    "category1": {
        "Name": "Maps",
        "Id": 3,
        "orderInList": 1
    },
    "category2": {
        "Name": "Books",
        "Id": 2,
        "orderInList": 2
    }
  }
};

function represent(obj) {
  var reprs = [];
  for (var key in obj) {

    if(!obj.hasOwnProperty(key)) continue;
    if (obj[key] instanceof Object) {
        var result = represent(obj[key]);
        for (var i = 0; i < result.length; i++) {
            reprs.push("[" + key + "]" + result[i]);
        }
    }
    else {
        reprs.push("[" + key + "] = " + obj[key]);
    }
  }
  return reprs;
}

console.log(represent(data));
//output

["[categories][category1][Name] = Maps",
 "[categories][category1][Id] = 3",
 "[categories][category1][orderInList] = 1",
 "[categories][category2][Name] = Books",
 "[categories][category2][Id] = 2",
 "[categories][category2][orderInList] = 2"]

名前、ID、またはorderInListのキー、値のペアはどれですか?

Names Id再帰終了条件でコードを追加して、キーがまたはに等しいかどうかを確認できると思いますorderInList

于 2012-08-13T13:32:35.860 に答える