Немного более длинная версия, которая позволит вам транспонировать отдельные аккорды или массив аккордов вверх / вниз ...
const chordMap = ['A','A#','B','C','C#','D','D#','E','F','F#','G','G#'];
Определить некоторые функции для перемещения аккордов вверх или вниз 1 и возврата результата
function chordUp(chord) {
let index = chordMap.indexOf(chord) + 1;
if (index >= chordMap.length) index = 0;
return chordMap[index];
}
function chordDown(chord) {
let index = chordMap.indexOf(chord) - 1;
if (index < 0) index = chordMap.length - 1;
return chordMap[index];
}
Затем функции для транспонирования целого массива аккордов вверх или вниз 1 и возврата результатов в виде массива
function transposeUp(input) {
let output = [];
for (let i = 0; i < input.length; i++) {
let chord = input[i];
output.push(chordUp(chord));
}
return output;
}
function transposeDown(input) {
let output = [];
for (let i = 0; i < input.length; i++) {
let chord = input[i];
output.push(chordDown(chord));
}
return output;
}
Наконец, вы можете использовать его так, как ...
let chords = ['A', 'G#', 'B', 'C#', 'A#', 'G'];
let transposedUp = transposeUp(chords); // [ "A#", "A", "C", "D", "B", "G#" ];
let transposedDown = transposeDown(chords) // [ "G#", "G", "A#", "C", "A", "F#" ];