2010-08-17 5 views

Répondre

3

Vous pouvez utiliser la méthode Array filter, qui renvoie un nouveau tableau contenant tous les éléments correspondants. (Il pourrait y avoir plus d'un élément correspondant)

var results = items.filter(function(obj) { return obj.ITEM == 1; }); 
for (var i = 0; i < results.length; i++) 
    alert(results[i].AMOUNT); 

Notez que IE6 (je ne suis pas sûr de versions plus récentes) ne supporte pas la méthode filter. Vous pouvez toujours le définir vous-même s'il n'existe pas:

+0

Ce que j'ai fini par faire était une hashtable. Je l'ai fait comme ça. $ .each (JSONObject, function() {Hashtable [this.item] = this;}); Maintenant je peux dire: HashTable [OBJECT_I_WANT] .VALUE_I_WANT_TO_SET = 'N'; – colemande

5

Vous créez un tableau d'objets. Si les éléments sont insérés dans l'ordre, vous pouvez utiliser:

items[0].AMOUNT; // return the amount of the first item in the array 

Cependant, (en utilisant JavaScript plaine), vous pouvez sans doute préférer d'exploiter la nature Hashtable des objets JavaScript et utiliser quelque chose comme ceci:

var items = { 
    item1: { 
     amount: 10 
    }, 
    item2: { 
     amount: 20 
    } 
}; 

Ensuite, vous serez en mesure d'utiliser la notation indice:

items['item1'].amount; 

... ou la notation de points:

items.item1.amount; 

@casablanca's solution est une alternative valable, mais notez que la méthode fonctionne en filter()O(n) depuis le sélecteur fourni est testé par rapport à chaque élément du tableau. D'autre part, un élément d'une table de hachage peut être trouvé dans O(1) (temps constant).

+0

Ceci est proche de ce que je veux mais le problème est que je ne sais pas quelle sera la valeur de l'article. – colemande

+0

@colemande: Pouvez-vous donner un exemple? Notez qu'en utilisant la notation en indice, vous pouvez toujours faire 'items ['item' + 1] .amount;', où vous pouvez remplacer le '1' par une variable ... (' 'item' + 1' est la concaténation de chaînes , et renvoie '' item1'') –

+0

Je pourrais utiliser votre première réponse. Mais je dois être capable d'obtenir l'index de l'objet dont j'ai besoin. Des idées comment faire cela? éléments var = [ { ARTICLE: rouge, MONTANT: 10 }, { ARTICLE: bleu, MONTANT: 20 } { PRODUIT: vert, MONTANT: 20 } ]; comment puis-je obtenir l'index pour items.ITEM == vert? – colemande

Questions connexes