使用javascript数组属性中的变量连接字符串

时间:2012-09-20 02:48:55

标签: javascript arrays multidimensional-array

我明白这可能不是我应该养成的习惯。但我试图将变量连接到一个存储在Javascript数组属性中的字符串。

例如我有:

var form = {
    'var1' : 'has a value here',
    'array' : [
        [ 'some text', 'some more text' ],
        [ 'second line of text', 'second entry ' + form.var1]
    ]
};
alert( form.array[1][1] );

这会导致警告显示“未定义”。

如果我这样做:

var var1 = 'has a value here';
var form = {
    'array' : [
        [ 'some text', 'some more text' ],
        [ 'second line of text', 'second entry ' + var1 ]
    ]
};
alert( form.array[1][1] );

字符串已定义并正确显示。

有没有办法可以将该值存储在'form'对象下并仍然得到我想要的结果?我假设'不'。但我想我会问。 (这对谷歌来说是个难题。:P)

3 个答案:

答案 0 :(得分:1)

你不能在对象文字中完成(在完成对象表达式之前,form未定义。),但你可以在外面完成。

var form = {
    'var1' : 'has a value here',
    'array' : [
        [ 'some text', 'some more text' ],
        [ 'second line of text', 'second entry ']
    ]
};

form.array[1][1] += form.var1;
alert( form.array[1][1] );​

答案 1 :(得分:1)

您可以将其声明为两部分:

var form = {
    'var1' : 'has a value here'
};

form['array'] = [
    [ 'some text', 'some more text' ],
    [ 'second line of text', 'second entry ' + form.var1]
];

alert( form.array[1][1] );

答案 2 :(得分:0)

我很惊讶你甚至达到警告声明。由于未定义表单,因此一旦命中form.var1,您的代码就会失败。达到这个目的的一种方法是分别定义它们。像这样

var form = {};
   form.var1 = 'has a value here';
   form.array =   [
      [ 'some text', 'some more text' ],
      [ 'second line of text', 'second entry ' + form.var1]
   ];