Por alguna razón, no puedo ordenar mi matriz de objetos usando la función Ordenar:
FullHistory.sort(function(a, b){ return a.Date.localeCompare(b.Date); });Cuando uso console.log() - Devuelve: -1/0/1, pero el orden de la matriz no cambia en absoluto
El resto de mi Código:
let FullHistory = []; CurrentTitle = $(data).find(".normal_header").text().replace(" Episode Details", ""); $($(data).find('.spaceit_pad').get().reverse()).each(function () { FullHistory.push({ Title: CurrentTitle, Ep: $(this).text().replace("Ep ", "").split(',')[0], Date: $(this).append(":00").text().replace("Ep ", "").replace("watched", "").replace(" Remove", "").split(",")[1].replace("on ", "").replace("at ", "").replace(" ", "") }); });Intenté: cambiar let a var, usar declaraciones if en Sort Function, cambiar tipos, usar Lodash Lib.
Sus propiedades de Date se ordenarán como cadenas, eso es lo que hace localeCompare . No considera que esas cadenas representen fechas. Dado que el formato de fecha utilizado no es ISO, el orden léxico de esas cadenas coincide con el orden que esperaría para las fechas .
Entonces convierta las cadenas a épocas numéricas:
let FullHistory = [ {Title: "Grand Blue", Ep: "1", Date: "02/19/2020 23:36:00" }, {Title: "Darling in the FranXX", Ep: "1", Date: "03/04/2019 23:44:00" }, ]; FullHistory.sort(function(a, b){ return Date.parse(a.Date) - Date.parse(b.Date); }); console.log(FullHistory);