Hay una tarea para realizar la clasificación de matrices a través de la clasificación de burbujas. Simplemente no puedo entender cómo es exactamente necesario implementar la clasificación de dicha matriz, en qué objetos. ¿Puede alguien ayudarme, por favor? Necesito ordenar por data.year.
const [table, setTable] = useState([ { text: "Пошел в свой первый класс", id: 0, data: { year: 2012, day: 25, month: 1, }, }, { text: "Поехал на чемпионат по бейсболу", id: 1, data: { year: 2018, day: 14, month: 3, }, }, { text: "Поступил в институт", id: 2, data: { year: 2007, day: 12, month: 4, }, }, ]);Compare el año en lugar del objeto en el algoritmo de clasificación de burbujas
//Bubble sort algorithm const bubbleSort = array => { const arr = Array.from(array); // avoid side effects for (let i = 1; i < arr.length; i++) { for (let j = 0; j < arr.length - i; j++) { if (arr[j].data.year > arr[j + 1].data.year) { //Added check inside object "data.year" [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]; } } } return arr; }; const myArr = [ { text: 'Пошел в свой первый класс', id: 0, data: { year: 2012, day: 25, month: 1, }, }, { text: 'Поехал на чемпионат по бейсболу', id: 1, data: { year: 2018, day: 14, month: 3 } }, { text: 'Поступил в институт', id: 2, data: { year: 2007, day: 12, month: 4 }, }, ] console.log(bubbleSort(myArr))Esto devolverá la matriz ordenada
function bblSort(arr) { for (var i = 0; i < arr.length; i++) { for (var j = 0; j < arr.length - i - 1; j++) { if (arr[j].data.year > arr[j + 1].data.year) { var temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } return(arr); } var arr = [ { text: "Пошел в свой первый класс", id: 0, data: { year: 2012, day: 25, month: 1, }, }, { text: "Поехал на чемпионат по бейсболу", id: 1, data: { year: 2018, day: 14, month: 3, }, }, { text: "Поступил в институт", id: 2, data: { year: 2007, day: 12, month: 4, }, }, ];Use .sort de JS para ordenarlo, por ejemplo, ...useState([...].sort((item1, item2) => item1.data.year - item2.data.year)) toma una función de comparación como primer argumento , si no pasa ninguna función, intentará ordenarla lexicográficamente.
Pero aún así hará una ordenación rápida o combinada dependiendo del tamaño de la matriz. Si desea que haga una clasificación de burbujas por algún motivo, debe escribir la función de clasificación manualmente.
Acerca de las clasificaciones: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#examples