1

ここに連想配列があります-

var dataset = {
    "person" : [    
        {"userLabels": ["Name","Role"]},
        {"tagNames": ["lName","role"]},
        {"tableClass": "width530"},
        {"colWidths": ["50%","50%"]}
    ]
}

さまざまな方法を使用してjQueryを使用して「userLabels」オブジェクトにアクセスしようとしましたが、失敗しました。基本的なことを間違っていると思います。jQuery を使用して userLabels オブジェクトにアクセスし、結果が配列になるようにしたいので、jQuery.inArray() 操作を実行できます。

4

3 に答える 3

9

まず、使用している方法を使用してデータセットにアクセスする方法は次のとおりです。

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

とにかく、これが役立つことを願っています。

于 2013-02-09T02:18:46.693 に答える
2
var basic = dataset.person[0].userLabels;
//          |        |     |
//          |        |     --- first element = target object
//          |        --- person property
//           ---- main-object
于 2013-02-09T01:42:40.550 に答える
0
var userLabels = dataset.person[0].userLabels;
if ($.inArray(yourVal, userLabels) !== -1) {
    doStuff();
}
于 2013-02-09T01:42:40.490 に答える