0

这个想法是有一个附加了三个值的和弦。这些值将存储在一个数组中,因为同一个音符将用于多个和弦。

例如

G 大调 = G、B、D

C 大调 = C、E、G

请注意,字母 G 用于两个和弦

以下是我想要的想法,但我不知道应该使用什么技术。警报只返回一个值,而不是全部三个。

var notes = new Array();
    notes[0] = "A"  ;
    notes[1] = "B" ;
    notes[2] = "C" ;
    notes[3] = "C#" ;
    notes[4] = "D" ;
    notes[5] = "E" ;
    notes[6] = "F#" ;
    notes[7] = "G" ;
    notes[8] = "G#" ;

var Gmajor = notes[7, 1, 4];
var Cmajor = notes[2, 5, 7];


alert(Gmajor);
4

3 回答 3

1

您必须为每个多和弦创建一个新数组:

var Gmajor = [ notes[7], notes[1], notes[4] ];
于 2013-11-13T12:47:24.753 回答
1

notes[7, 1, 4]与 完全相同notes[4],如果您对原因感兴趣,请阅读逗号运算符

您正在寻找的是:

var notes = [ // changed your initialization to use an array literal instead
  "A",  // 0
  "B",  // 1
  "C",  // 2
  "C#", // 3
  "D",  // 4
  "E",  // 5
  "F#", // 6
  "G",  // 7
  "G#"  // 8
];

var Gmajor = [notes[7], notes[1], notes[4]];
var Cmajor = [notes[2], notes[5], notes[7]];

如果您希望它表示为字符串,您可以执行以下操作:

var GmajorAsString = Gmajor.join(' '); // if you need the array
var GmajorString = notes[7] + ' ' + notes[1] + ' ' + notes[4]; // just string
于 2013-11-13T12:47:58.100 回答
1

您可以创建功能:

var notes = new Array();
    notes[0] = "A"  ;
    notes[1] = "B" ;
    notes[2] = "C" ;
    notes[3] = "C#" ;
    notes[4] = "D" ;
    notes[5] = "E" ;
    notes[6] = "F#" ;
    notes[7] = "G" ;
    notes[8] = "G#" ;

var getNotes = function(first, second, third){
    return notes[first] + ' ' + notes[second] + ' ' + notes[third];
}

alert(getNotes(7, 1, 4)); // G B D
于 2013-11-13T13:02:42.820 回答