Tengo dos matrices a y b como esta:
const a = [1,2,3,4] const b = ['1','2','3','4'] // could be 'a','b','c','d' const reordered_a = [4,1,3,2] // based on this reordering function reorder_b() { // should return ['4','1','3','2'] } ¿Cómo puedo devolver la versión reordenada de b en función de las posiciones reordenadas en reordered_a ?
Podría tomar un objeto con los índices de los valores y mapear el patrón con los valores de los índices.
const a = [1, 2, 3, 4] const b = ['1', '2', '3', '4'] // could be 'a','b','c','d' const reordered_a = [4, 1, 3, 2] // based on this reordering function reorder_b() { const references = Object.fromEntries(Object.entries(a).map(a => a.reverse())); return reordered_a.map(k => b[references[k]]); } console.log(reorder_b()); // 4 1 3 2Lo que tienes que hacer es primero usar cada par de elementos el1 y el2 y convertirlos en números. Luego, una vez que se hayan convertido, asegúrese de que el último sea más grande que el último al verificar su diferencia:
return b.sort((el1,el2)=>Number(el2)-Number(el1))