まず、使用している方法を使用してデータセットにアクセスする方法は次のとおりです。
var dataset =
{
"person" : [
{"userLabels": ["Name","Role"]},
{"tagNames": ["lName","role"]},
{"tableClass": "width530"},
{"colWidths": ["50%","50%"]}
]
};
alert(dataset['person'][0]['userLabels']); //style 1
alert(dataset.person[0]['userLabels']); //style 2
alert(dataset.person[0].userLabels); //style 3
//Also you can use variables in place of specifying the names as well i.e.
var propName ='userLabels';
alert(dataset.person[0][propName]);
//What follows is how to search if a value is in the array 'userLabels'
$.inArray('Name', dataset.person[0].userLabels);
なぜそんな「おもしろい方法」でこれをやっているのか聞いてみたいと思います。それらをすべてオブジェクトにしてみませんか?
考えてみれば、人はオブジェクトであり、配列は基本的に「length」プロパティを持つJavascriptのオブジェクトであることに注意してください。ただし、ここでは詳しく説明しません(ただし、気軽に調査してください)。オブジェクトのプロパティを反復処理する方法がわからないためだと思います。もちろん、それがあなたにとってより理にかなっているなら、それを選んでください。
配列とオブジェクトの違いの1つは、オブジェクトのプロパティを定義する必要があることです。以下に「undefined」の「Name」と「Role」の値を指定したことに気付くでしょう。
いずれにせよ、これが私がすることです:
var dataset =
{
"person" : {
"userLabels": {"Name" : undefined,"Role": undefined},
"tagNames": {"lName" : undefined,"role" : undefined},
"tableClass": "width530",
"colWidths": ["50%","50%"]
}
};
for (var i in dataset) { //iterate over all the objects in dataset
console.log(dataset[i]); //I prefer to use console.log() to write but it's only in firefox
alert(dataset[i]); // works in IE.
}
//By using an object all you need to do is:
dataset.person.userLabels.hasOwnProperty('Role'); //returns true or false
とにかく、これが役立つことを願っています。