使用jQuery访问关联数组

Har*_*hah 0 javascript arrays jquery associative-array

我这里有一个关联数组 -

var dataset = {
    "person" : [    
        {"userLabels": ["Name","Role"]},
        {"tagNames": ["lName","role"]},
        {"tableClass": "width530"},
        {"colWidths": ["50%","50%"]}
    ]
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用各种方法使用jQuery访问'userLabels'对象,但我失败了.我认为我在做基础知识时出错了.我希望使用jQuery访问userLabels对象,结果应该是一个数组,所以我可以执行jQuery.inArray()操作.

Kli*_*lik 8

首先,以下是使用您拥有的方法访问数据集的方法.

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);
Run Code Online (Sandbox Code Playgroud)

我想问你为什么要用这种"有趣的方式"来做这件事.你为什么不把它们全部制成物体?

如果你是我,那就是我会做的,因为如果你想到它,一个人就是一个对象,应该注意数组基本上是Javascript中具有'length'属性的对象,尽管我不会在这里详细说明(随意做一些研究).我猜它是因为你不知道如何迭代对象属性.当然,如果它对你更有意义,那就去吧.

注意数组和对象之间的区别之一是需要定义对象属性; 你会注意到我在下面给出了'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
Run Code Online (Sandbox Code Playgroud)

无论如何,希望这会有所帮助.