2010-05-12 2 views
1

J'ai 2 tableaux:Javascript, JQuery - Appel position de tableau en utilisant un nom de variable

var array1 = [50,60]; 
var array2 = [120,180]; 

Je passe une valeur à une variable comme ceci:

var curId = $(this).attr('id'); 

Je veux régler la contenu de #result à un calcul comme ceci:

$ (# résultat) .text (nombre * curId [0]);

Le nombre est une variable prédéfinie par moi, et curId [0] doit en fait traduire en array1 [0] ou array2 [0], en fonction de la classe css.

Quelqu'un peut-il me dire la bonne syntaxe pour cela? Je suis assez noob à js. Merci.

+1

@close électeur: Comment n'est-ce pas une vraie question? –

Répondre

1

Vous pouvez utiliser une variable pour tenir le tableau que vous souhaitez utiliser:

var myArray; 

if (something) 
    myArray = array1; 
else 
    myArray = array2; 

$('#result').text(number * myArray[0]); 

Si vous essayez d'obtenir le tableau dans une variable d'une chaîne contenant le nom de la variable, vous devriez utiliser un objet, comme ceci:

var arrays = { 
    array1: [50,60], 
    array2: [120,180] 
}; 

var myArray = arrays[curId]; 

$('#result').text(number * myArray[0]); 
+0

Merci, cela fonctionne mieux. – Andrei

0

Alors curId sera la chaîne "array1" ou "array2"? Ensuite, vous feriez comme ceci:

var lookups = { 
    array1: [50, 60], 
    array2: [120,180] 
}; 

var curId = $(this).attr('id'); 
$('#result').text(number * lookups[curId[0]]); 

Qu'est-ce qui fait est de créer un objet (lookups) pour contenir cette information, vous êtes à la recherche vers le haut. Cet objet a les propriétés array1 et array1, qui sont vos tableaux. Vous obtenez la chaîne "array1" ou "array2" de l'ID de votre élément dans la variable curId, puis vous utilisez le fait que Javascript vous permet de rechercher des propriétés par leur nom en utilisant la syntaxe []. Tous ces éléments sont les mêmes:

a = lookups.array1; 
// is the same as 
a = lookups["array1"]; 
// is the same as 
a = lookups["array" + "1"]; 
// is the same as 
s = "array1"; 
a = lookups[s]; 

Techniquement, si vos tableaux sont déclarés à portée globale, vous pouvez le faire sans utiliser l'objet lookups, mais si vous êtes assez nouveau Javascript je ne vais pas aller dans pourquoi, et peu importe, je recommanderais d'en utiliser un.

Questions connexes