使用javascript,是否可以使用另一个字符串值定义变量的名称?

时间:2010-04-09 16:44:39

标签: javascript

例如,我有一个名为'categories'的数组,其值为['4','9']。我正在尝试将该值与先前定义的数组的名称一起使用。我之前定义了几个数组,名为row1,row2,row3等。我也使用jQuery。

尝试做这样的事情:

for (i=0; i<categories.length; i++) {
    row+categories[i].push($(this).attr('id'));
    console.log(row+categories[i]);
}

显然行+类别[i]不起作用,但也许会让你知道我想要做什么?在这种情况下,第一次循环时将该id值推送到数组'row4',然后第二次将'row9'推送到数组'row4'。

感谢您的帮助!!

3 个答案:

答案 0 :(得分:4)

为什么不定义包含多个数组的单个行变量,而不是定义多个row1,row2,row3等?

var rows = [[], [], []];
var categories = ['4', '9'];
for (i = 0; i < categories.length; i++) {
    rows[categories[i]].push($(this).attr('id'));
    console.log(rows[categories[i]]);
}

如果在您的情况下有意义,它甚至可以是具有属性的对象:

var rows = {
    row1: [],
    row2: [],
    row3: [],
    getRow: function(index) {
        return this["row" + index];
    }
    };
var categories = ['4', '9'];
for (i = 0; i < categories.length; i++) {
    rows.getRow(categories[i]).push($(this).attr('id'));
    console.log(rows.getRow(categories[i]));
}

答案 1 :(得分:0)

你可以使用eval(),即使我不喜欢它...

for (i=0; i<categories.length; i++) {
    eval("row" + categories[i] + ".push($(this).attr('id'))");
    console.log(eval("row" + categories[i]));
}

答案 2 :(得分:0)

你想要全局变量还是局部变量? (下面的代码使用全局变量)

var rowVar;
for (i=0; i<categories.length; i++) {
  rowVar = "row"+categories[i];
  window[rowVar].push($(this).attr('id'));
  console.log(window[rowVar]);
}