JSFiddle - React, Tailwind, and code Playground
JavaScript
function transpose(chord, increment)
{
var cycle = ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"];
var el = chord.charAt(0);
if(chord.length > 1 && chord.charAt(1) == '#')
{
el += "#";
}
var ind = cycle.indexOf(el);
var newInd = (ind + increment + cycle.length) % cycle.length;
var newChord = cycle[newInd];
return newChord + chord.substring(el.length);
}
console.log(transpose("E", 4));
console.log(transpose("Dsus7", 3));
console.log(transpose("B", 2));
console.log(transpose("C", -1));