Aquí tengo dos matrices en código javascript
const array1 = [200, 455.23, -306.5, 9000, -642.21, -133.9, 79.97, 1300]; const array2 = [ '2019-11-18T21:31:17.178Z', '2019-12-23T07:42:02.383Z', '2020-01-28T09:15:04.904Z', '2020-04-01T10:17:24.185Z', '2022-04-08T14:11:59.604Z', '2022-04-10T17:01:17.194Z', '2022-04-11T23:36:17.929Z', '2022-04-13T10:51:36.790Z', ]; array1.sort((a, b) => a - b);Aquí quiero que array2 se ordene exactamente en el mismo orden en que se ordena array1. suponga que cada elemento de ambas matrices en el mismo índice tiene que estar en el mismo índice incluso después de ordenar matriz1. En resumen, quiero ordenar una matriz. Y quiero que la otra matriz esté ordenada exactamente en el mismo orden.
Aquí va un ejemplo de cómo implementar la sugerencia anterior, donde ambos valores están en una sola matriz, como objetos, y ordenados por el valor de cada objeto en la matriz.
const myArray = [ {date: '2019-11-18T21:31:17.178Z', value: 200}, {date: '2019-12-23T07:42:02.383Z', value: 455.23}, {date: '2020-01-28T09:15:04.904Z', value: -306.5}, {date: '2020-04-01T10:17:24.185Z', value: 9000}, {date: '2022-04-08T14:11:59.604Z', value: -642.21}, {date: '2022-04-10T17:01:17.194Z', value: -133.9}, {date: '2022-04-11T23:36:17.929Z', value: 79.97 }, {date: '2022-04-13T10:51:36.790Z', value: 1300}, ] myArray.sort((a, b) => a.value - b.value) console.log(myArray);Primero cree una matriz de objetos literales que contenga los pares de valores. Luego use la tecla sortby para ordenar esa matriz. ¡Estás listo!
const array1 = [200, 455.23, -306.5, 9000, -642.21, -133.9, 79.97, 1300]; const array2 = ['2019-11-18T21:31:17.178Z','2019-12-23T07:42:02.383Z','2020-01-28T09:15:04.904Z','2020-04-01T10:17:24.185Z','2022-04-08T14:11:59.604Z','2022-04-10T17:01:17.194Z','2022-04-11T23:36:17.929Z','2022-04-13T10:51:36.790Z',]; const sorted = array1.map((a1,index)=>{return {sortBy: a1, value: array2[index]}}).sort((a,b)=>a.sortBy-b.sortBy); console.log(sorted); //------------------------------------------------------- //or in a function const sortArrayByAnother = (arr, sortBy) => { return sortBy.map((a1,index)=>{return {sortBy: a1, value: arr[index]}}).sort((a,b)=>a.sortBy-b.sortBy).map((d)=>d.value); } console.log(sortArrayByAnother(array2, array1));Para ordenar 2 o más arreglos sin combinarlos, cree un arreglo de índices ordenados según uno de los arreglos, luego reordene los arreglos según el arreglo de índices.
const array1 = [200, 455.23, -306.5, 9000, -642.21, -133.9, 79.97, 1300]; const array2 = [ '2019-11-18T21:31:17.178Z', '2019-12-23T07:42:02.383Z', '2020-01-28T09:15:04.904Z', '2020-04-01T10:17:24.185Z', '2022-04-08T14:11:59.604Z', '2022-04-10T17:01:17.194Z', '2022-04-11T23:36:17.929Z', '2022-04-13T10:51:36.790Z', ]; // create array of sorted indexes according to array1 var index = Array.from(Array(array1.length).keys()) .sort((a, b) => array1[a] < array1[b] ? -1 : (array1[b] < array1[a]) | 0) // reorder array1, array2, index in place according to index in O(n) time var i; var j; var k; var t1; var t2; for(i = 0; i < index.length; i++){ if(i != index[i]){ t1 = array1[i]; t2 = array2[i]; k = i; while(i != (j = index[k])){ array1[k] = array1[j]; array2[k] = array2[j]; index[k] = k; k = j; } array1[k] = t1; array2[k] = t2; index[k] = k; } } console.log(array1); console.log(array2);