Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将变量与静态名称混合以创建动态变量_Javascript - Fatal编程技术网

Javascript 将变量与静态名称混合以创建动态变量

Javascript 将变量与静态名称混合以创建动态变量,javascript,Javascript,我有一个名为“notes”的多维数组。它有字段“note1”、“note2”和“note3” 我有一个名为“noteNum”的变量,可以设置为1、2或3 如果“noteNum=2”,则“notes[0].note+noteNum”应等于“notes[0].note2”。但我似乎无法附加变量?为什么不呢 我的代码如下: // Array constructor function notesConstructor(note1, note2, note3) { this.note1 = not

我有一个名为“notes”的多维数组。它有字段“note1”、“note2”和“note3”

我有一个名为“noteNum”的变量,可以设置为1、2或3

如果“noteNum=2”,则“notes[0].note+noteNum”应等于“notes[0].note2”。但我似乎无法附加变量?为什么不呢

我的代码如下:

// Array constructor
function notesConstructor(note1, note2, note3) {
    this.note1 = note1;
    this.note2 = note2;
    this.note3 = note3;
}

var notes = new Array();

notes[0] = new notesConstructor("Note 1A example note", "Note 2A example note", "Note 3A example note");
notes[1] = new notesConstructor("Note 1B example note", "Note 2B example note", "Note 3B example note");

console.log(notes[0].note1); // "Note 1A example note"

// WHERE THE PROBLEM IS...
var noteNum = 2;

console.log(notes[0].note + noteNum); // This SHOULD be "Note 2A example note" but it doesn't work

小提琴:

试试
console.log(notes[0][“note”+noteNum])
试试这样的方法:

console.log(notes[0][“note”+noteNum])


现在,您正试图访问未定义的字段“note”。

括号表示法,
obj[prop]
I得到“TypeError:“未定义”不是对象(评估'notes[0].note[noteNum]')“您正在查找的是
notes[0][“note”+noteNum]
”它有字段“note1”、“note2”和“note3”–为什么这些是单变量,而不是数组?然后,您可以通过索引轻松地访问它们……经验法则:每当您开始在变量名中使用“编号”时,您就错了。@CBroe,泛化是。。。通常也是错误的;)一切都取决于实现,特别是如果这些名称是表示某些数据的字段。虽然如果数字堆积起来,开始有两个数字,它是。。。一般来说,情况开始变得一团糟。