2010-05-12 51 views
1

呼叫阵列位置我有两个数组:的Javascript,jQuery的 - 通过使用一个变量名

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

我传递一个值给一个变量是这样的:

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

我想设置#result的内容如下所示:

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

Number是我预先定义的一个变量,curId [0] shoul实际上转换为array1 [0]或array2 [0],具体取决于css类。

任何人都可以告诉我正确的语法吗?我非常喜欢js。 谢谢。

+1

@close voter:这不是一个真正的问题吗? – 2010-05-12 15:21:51

回答

1

您可以使用一个变量来保存您要使用数组:

var myArray; 

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

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

如果你想从包含变量的名称,你应该字符串获得一个变量数组使用对象,像这样:

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

var myArray = arrays[curId]; 

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

谢谢,这个效果最好。 – Andrei 2010-05-12 16:53:48

0

所以curId将字符串“阵列1”或“数组2”?然后,你会做这样的:

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

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

什么,做的就是创建一个对象(lookups)包含此信息你仰视。该对象的属性为array1array1,这是您的阵列。从元素的ID到变量curId中获得字符串“array1”或“array2”,然后使用Javascript允许您使用[]语法通过名称查找属性。所有这些都是一样的:

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

从技术上讲,如果您的阵列在全局范围内声明的,你能做到这一点,而无需使用lookups对象,但如果你是相当新的JavaScript我不会进入为什么,不管,我会推荐使用一个。