1

今天用 javascript 研究数组。我创建了两个数组

    var items = ['Bread', 'Milk', 'Butter']
    var calories = [10,20,30]

这个想法是卡路里对应于项目,所以面包有 10 卡路里。如果我想查看两个数组组合的结果,那么我称之为

   document.writeln(items[1] +  calories[1])

我猜有一种更有效的方法来做到这一点,但作为一个新手,我会很感激任何指向正确方向的指针。理想情况下,我想将所有信息存储在一个数组中

4

6 回答 6

10

一种方法是使用对象而不是数组:

var items = {
   Bread: 10, 
   Milk: 20, 
   Butter: 30
};

alert(items["Bread"]); // Alert 10

MDN 上有一篇关于在 JavaScript 中处理对象的好文章,可能对您有用。

于 2012-10-29T12:39:02.197 回答
4

您可以使用对象数组:

var items = [
   {Bread: 10},
   {Milk:20}
];

或者只是一个对象

var items {
    Bread:10,
    Milk:20
}

要使用键值方法打印面包卡路里:

   alert(items["Bread"]);

如果你不想使用 itemname 作为“key”,你可以这样做:

var items = [
   {
    Item: "Bread", 
    Calories: 10
   },
   {
    Item: "Milk", 
    Calories: 20
   }
];

然后你可以像这样打印它:

alert(items[0].Item+" has "+items[0].Calories+" calories");

然后,如果您想添加元素:

items.push({Item:"Butter",Calories:30});
于 2012-10-29T12:38:29.500 回答
0

不太确定你所说的“更有效”是什么意思,但这样的事情更像是你想要建模:

var items = {
  'Bread': 10,
  'Milk': 20,
  'Butter': 30
};
于 2012-10-29T12:39:56.800 回答
0

哈希表/字典怎么样?

var calories = { Bread: 10,  Milk: 20, Butter: 30 };

要从此对象获得所需的输出,请查看我的 (Elias Van Ootegem) 答案。
或“对象”:

var food = [ 
     { name: 'Bread', calories: 10 },
     { name: 'Milk', calories: 20 },
     { name: 'Butter', calories: 30 },
];

要在此处获取输出:

for (var i=0;i<food.length;i++)
{
    document.writeln(food[i].name +': '+food[i].calories);
}
于 2012-10-29T12:40:23.480 回答
0

您可能正在寻找对象文字。你希望你的输出是这样的:

var items = {
    Bread: 10,
    Milk : 20
};

您可以遍历数组并填充最初为空的数组,如下所示:

var items = {}, food, calories;

food = ['Bread', 'Milk', 'Butter'];
calories = [10,20,30];

for (var i = 0; i < food.length; i++) {
    for (var l = 0; l < calories.length; l++) {
        items[ food[i] ] = calories[ l ];
    }
}
于 2012-10-29T12:42:13.340 回答
0

是的,就像每个人都告诉你的那样,你需要一个对象。要获得实际输出:

var items = {
   'Bread' : 10, 
   'Milk', : 20, 
   'Butter' : 30
};
for (var name in items)
{//loop through object literal, list all properties
    if (items.hasOwnProperty(name))
    {//avoid output of prototype properties
        document.writeln(name + ': ' + items[name]);
    }
}
//output:
    Bread: 10
    Milk: 20
    Butter: 30
于 2012-10-29T12:46:31.910 回答