如何使两个JavaScript数组的项目相互对应?

时间:2012-10-29 12:37:16

标签: javascript

今天使用javascript钻研阵列。我创建了两个数组

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

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

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

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

6 个答案:

答案 0 :(得分:10)

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

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

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

MDN上有a good article关于在JavaScript中处理可能对您有用的对象的问题。

答案 1 :(得分:4)

您可以使用一组对象:

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

或只是一个对象

var items {
    Bread:10,
    Milk:20
}

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

   alert(items["Bread"]);

如果您不想将itemname用作“键”,则可以执行以下操作:

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});

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

hashtables / dictionaries怎么样?

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);
}

答案 4 :(得分: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 ];
    }
}

答案 5 :(得分: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