Comment créer une méthode pour une classe de tableau?

voix
0

Désolé, je sais que cela est la programmation 101, mais je ne peux pas trouver une bonne documentation ...

J'ai un tableau, et je veux mouler chaque membre comme un objet, puis de les appeler par le nom attribué (ce serait tellement plus simple si javascript autorisée pour les valeurs d'index non numérique). Par exemple:

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

Il est évident que ce n'est pas la meilleure façon de faire, mais le résultat souhaité serait une alerte dit « 100 ».

J'ai été aussi loin que la création d'une classe qui a une méthode appelée nom qui pointe vers l'objet principal, comme suit:

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

Mais cela exige encore que chaque objet a un nom de variable unique, qui va à l'encontre du point entier. Ce que je veux simplement jeter tout mon tableau dans une classe générique et appeler les valeurs dont j'ai besoin du nom.

Je sais que cela est probablement moyen de facile à poser, mais je suis coincé!

Merci.

Créé 17/05/2009 à 05:31
source utilisateur
Dans d'autres langues...                            


6 réponses

voix
5

Pourquoi ne pas utiliser des objets?

var things = {
  chair: 10,
  tv: 100,
  bed: 75
};
alert(things.chair); // 10
alert(things['tv']); // 100
Créé 17/05/2009 à 05:43
source utilisateur

voix
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); 
Créé 17/05/2009 à 05:44
source utilisateur

voix
1

Que diriez-vous simplement en utilisant un objet dictionnaire:

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}};
Créé 17/05/2009 à 05:44
source utilisateur

voix
1

Pourquoi utiliser ne définit pas vos tableaux comme un objet comme

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

Ensuite, vous pouvez accéder à des prix comme propriétés d'un tableau associatif

things.chair 

vous donnerait 10

Créé 17/05/2009 à 05:46
source utilisateur

voix
0

pourquoi ne pas essayer JSON:

comme

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);
}
Créé 17/05/2009 à 06:00
source utilisateur

voix
0

Si vous devez le faire en utilisant le format de données d'origine (parce que vous avez pas d'influence sur elle) utiliser les éléments suivants:

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);
Créé 17/05/2009 à 10:11
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more