Как создать метод для класса массива? - PullRequest
0 голосов
/ 17 мая 2009

Извините, я знаю, что это программирование 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 ]

5 голосов
/ 17 мая 2009

Почему бы не использовать объекты?

var things = {
  chair: 10,
  tv: 100,
  bed: 75
};
alert(things.chair); // 10
alert(things['tv']); // 100
2 голосов
/ 17 мая 2009
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); 
1 голос
/ 17 мая 2009

use Почему бы не определить ваши массивы как объект типа

var things = {'chair':10, 'tv':100, 'bed':75}

Тогда вы можете получить доступ к ценам, таким как свойства ассоциативного массива

things.chair 

даст вам 10

1 голос
/ 17 мая 2009

Как насчет использования словарного объекта:

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}};
0 голосов
/ 17 мая 2009

Если вам нужно сделать это, используя исходный формат данных (потому что вы не имеете на это никакого влияния), используйте следующее:

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);
0 голосов
/ 17 мая 2009

почему бы вам не попробовать 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...