(ACTUALIZADO).
Estoy tratando de ordenar 2 matrices de objetos al mismo tiempo.
Tengo una matriz de objetos que contienen fecha.
firstArray = [{date: timestamp0 ...}, {date: timestamp1 ...}, {date: timestamp2 ...}, {date: timestamp3 ...}, ]Tengo una segunda matriz con la misma longitud que la primera matriz contiene la ubicación (x, y).
secondArray = [{x: number0 ..., y: number0}, {x: number0 ..., y: number0}, {x: number0 ..., y: number0}, {x: number0 ..., y: number0}, ]Cada objeto en la primera matriz está relacionado con el objeto en la segunda matriz, lo que significa:
firstArray[0] está relacionado con secondArray[0] y lo mismo para todos.
Después de ordenar la primera matriz, la salida es (ejemplo):
firstArray = [{date: timestamp3 ...}, {date: timestamp1 ...}, {date: timestamp2 ...}, {date: timestamp0 ...}, ] Quiero ordenar secondArray para que sea igual a firstArray , porque como dije, todos los objetos están relacionados.
¿Cómo ordenar la segunda matriz en el mismo orden que la primera matriz?
Ordenando firstArray :
firstArray.sort(function (a, b) { return new Date(b.date) - new Date(a.date); });Básicamente, tome los índices, clasifíquelos como desee y asigne los valores a nuevas matrices.
const array1 = [], // given data array2 = [], // given data indices = [...array1.keys()].sort((a, b) => array1[a] - array1[b]), // or other sorting callback sortedArray1 = indices.map(i => array1[i]), sortedArray2 = indices.map(i => array2[i]); console.log(sortedArray1); // sorted array1 console.log(sortedArray2); // sorted array2Agregue el índice original antes de ordenar:
const firstArray = [ { date: "12/12/2021" }, { date: "12/11/2021" }, { date: "12/13/2021" }, { date: "12/3/2021" }]; firstArray.forEach((item, i) => item.orgIdx = i) console.log(firstArray) firstArray.sort((a,b)=> new Date(a.date)- new Date(b.date)) console.log(firstArray) const secondArray = [ { x: "number12" }, { x: "number11" }, { x: "number13" }, { x: "number3" }]; const secondArrSorted = new Array(secondArray.length) firstArray.forEach(({orgIdx},i) => secondArrSorted[i] = secondArray[orgIdx]); console.log(secondArrSorted)