Ehm....forse no ho capito io

all'inizio hai

ArrPrimario = new Array(1,2,3,4,5)
ArrSecondario = new Array(a,b,c,d,e)

poi tramite la funzione shuffle ti ritrovi
ArrPrimario con i valori spostati tipo [3,4,1,2,5]

Ora per rispostare allo stesso modo l'array secondario non basta sempclimente leggerlo con gli indici di ArrPrimario, e riscriverlo in sequenza? Basta metterci un -1 davanti

for (i=0;i<ArrPrimario.length;i++){
indice=ArrPrimario[i]-1
ArrNuovo.push(arrSecondario[indice])
}

primo ciclo

indice = 3-1 (quindi 2)
ArrSecondario[indice] estrae "c"

secondo ciclo
indice = 4-1 (quindi 3)
ArrSecondario[indice] estrae "d"

terzo ciclo
indice = 1-1 (quindi 0
ArrSecondario[indice] estrae "a"

e via dicendo

alla fine hai stampato
c
d
a
b
e
basta metterli in sequenza su un nuovo array

Tu dici perchè? Perchè mi è sembrata la cosa più semplice senza che andassi a studiare tutto quello che hai fatto