如何为数组类创建方法?

时间:2009-05-17 04:31:13

标签: javascript arrays oop object methods

抱歉,我知道这是编程101,但我找不到任何好的文档...

我有一个数组,我想将每个成员转换为一个对象,然后通过指定的名称调用它们(如果javascript允许非数字索引值,这将更加简单)。例如:

 var things = ['chair', 'tv', 'bed'];
 var costs = ['10', '100', '75'];

 for (var i = 0; i < things.length; i++) {
      thing.name = things[i];
      thing.cost = costs[i];
 }

 alert(thing.name('tv').cost);

显然这不是这样做的方法,但是期望的结果将是一个表示“100”的警报。

我已经创建了一个具有名为name的方法的类,该方法指向主对象,如下所示:

function thing(name, cost) {
         function name(thename) {
              return this;
         }
this.thingname = name;
this.name = name;
this.cost = cost;
}

但是这仍然要求每个对象都有一个唯一的变量名,这与整个点相反。我想要的是简单地将我的所有数组放入一个泛型类中,并通过名称调用我需要的值。

我知道这可能很容易在这里问,但我被卡住了!

感谢。

6 个答案:

答案 0 :(得分:5)

为什么不使用对象?

var things = {
  chair: 10,
  tv: 100,
  bed: 75
};
alert(things.chair); // 10
alert(things['tv']); // 100

答案 1 :(得分:2)

var stuff = {
    chair: 10,
    tv: 100,
    bed: 75
};
alert(stuff.chair); // alerts '10'
alert(stuff['chair']); // alerts '10'

stuff.house = 100000;
stuff['car'] = 10000;
alert(stuff['house']); // you get the picture...
alert(stuff.car); 

答案 2 :(得分:1)

如何使用字典对象:

var things = {'chair':10, 'tv':100, 'bed':75};
alert(things['chair'])

// if you want to use things['chair'].cost, it'd look more like this:
var things = {'chair': {cost: 10}, 'tv': {cost: 100}, 'bed': {cost: 75}};

答案 3 :(得分:1)

use为什么不将数组定义为像

这样的对象
var things = {'chair':10, 'tv':100, 'bed':75}

然后您可以访问类似关联数组属性的价格

things.chair 

会给你10个

答案 4 :(得分:0)

你为什么不试试JSON:

喜欢

var myArray= {"things": [
                    {"name":"chair","price":"10"},
                    {"name":"tv","price":"100"},
                    {"name":"bed","price":"75"}
             ]};

//now you can use it like this
for(var i=0; i< myArray.things.length; i++)
{
    alert(myArray.things[i].name + " costs " + myArray.things[i].price);
}

答案 5 :(得分:0)

如果您需要使用原始数据格式(因为您对它没有影响),请使用以下内容:

var things = ['chair', 'tv', 'bed'];
var costs = ['10', '100', '75'];

var associatedThings;

for(i=0,x=things.length;i<x;i++){
    associatedThings[things[i]] = {cost: costs[i]};
}

alert(associatedThings['tv'].cost);