Что нужно исправить для моего решения, чтобы оно работало правильно - PullRequest
0 голосов
/ 22 сентября 2018

ОБНОВЛЕНИЕ: Я нашел решение самостоятельно.вместо решения, приведенного ниже, более простым решением является

ИСТОЧНИК КОДА

let trUp = (chord) => {

let index = arr.indexOf (аккорд);return arr.IndedOf (index) - 1;

}

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Немного более длинная версия, которая позволит вам транспонировать отдельные аккорды или массив аккордов вверх / вниз ...

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#" ];
0 голосов
/ 22 сентября 2018

Вы можете использовать массив и искать индекс и приращение, регулируя длину массива с помощью оператора напоминания %.

function up(note) {
    return notes[(notes.indexOf(note) + 1) % notes.length];
}

var notes = ['A', 'A#', 'B', 'C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#'];

console.log(up('C'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...