在Javascript中按键查找项目

时间:2011-05-17 11:35:21

标签: javascript jquery

快速的新秀问题。

假设我有一个像这样的javsacript对象:

var meh=[["cars",27], ["bikes",85], ["skates",4]];

要浏览每个数据对象,我可以这样做:

$.each(meh, function(index,value){        
    console.log(value) //returns ["cars",27] etc..
 });

考虑到我知道汽车的位置,我可以这样做来访问它:

console.log(meh[0][0]) //shows "Cars"

当然,如果我想要汽车的价值,我需要这样做:

console.log(meh[0][1]) //Shows 27

现在,我有字符串 - 密钥,例如carsbikesskates

但我无法弄清楚这一点:我如何访问各自的价值观?

meh["cars"]返回undefined,因为据我所知,它无法在每个对象之外找到描述。

我可以做meh[0]["cars"]但是由于汽车的位置可能会发生变化,它会失败。

如何使用密钥访问某些内容的值?

感谢。

5 个答案:

答案 0 :(得分:8)

您应该将其更改为对象

var meh={"cars" :27 , "bikes" :85, "skates" :4};

现在您只需通过按键

即可访问它
alert(meh['cars']); //27

答案 1 :(得分:4)

如果您有权访问代码并可以更改对象,请将其更改为以下内容:

meh = {
  'cars': 27,
  'bikes': 85,
  'skates': 4
};

您可以使用

等键访问它们
meh["cars"] //will give you 27

如果您无法更改代码,那么我看到的唯一方法是使用jQuery.each并将每个密钥与您的已知密钥进行比较并将其分配给临时变量。

答案 2 :(得分:3)

改为使用对象:

var meh = {
    "cars":   27,
    "bikes":  85,
    "skates": 4
};

您可以使用$.each()

对其进行迭代
$.each(meh, function (key, value) {
    // key == "cars" and value == 27, etc.
});

访问值的方式如下:

meh.cars

相当于:

meh["cars"]

显然,第二种表示法可以与变量一起使用。

答案 3 :(得分:0)

您的数据结构在数组中,因此您始终必须通过数组语法进行访问,例如: [0] [1]。 JavaScript中的数组不是关联的。您可以编写一个辅助函数,该函数遍历数组,查找您指定的键并返回值。或者您可以将数据结构更改为对象,这些对象支持键查找。

答案 4 :(得分:0)

如果您无法更改对象,则可以创建地图以简化管理索引。 E.g。

map = {
  'cars': 0,
  'bikes': 1,
  'skates': 2
};

然后,你可以这样做:

alert(meh[map['cars']][1]);