Javascript,jquery - 使用变量名称调用数组位置

时间:2010-05-12 15:12:35

标签: javascript jquery variables

我有2个阵列:

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

我将值传递给这样的变量:

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

我想将#result的内容设置为这样的计算:

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

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

有人可以告诉我正确的语法吗?我在js很漂亮。 感谢。

2 个答案:

答案 0 :(得分: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]);

答案 1 :(得分:0)

所以curId将是字符串“array1”或“array2”?那你就这样做:

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还不熟悉,我将不会讨论为什么,无论如何,我d建议使用一个。