Hola a todos. Quiero que se ordene por fecha y se vuelva a mostrar al hacer clic en Reciente. Pero simplemente no pude. Cuando hago console.log, veo la matriz sin ordenar. y cuando hago console.log me quedo indefinido. Siento que me estoy perdiendo algo muy simple, pero no pude resolverlo. ¿Dónde me estoy perdiendo? ¿Por qué console.log devuelve undefined? ¿Alguna ayuda?
Tengo una idea de lo que puede hacer: organice el formato de fecha al revés (yyyy-mm-dd) y luego elimine el - tendrá un número ordenable que puede usar para ordenar la matriz.
1 convertir a una matriz con JSON. parse () si los valores están en JSON ... En su caso, no son una matriz pura
2 Crea una función y compara las fechas usando new Date()
var arr = [{id: 1, date: Mar 12 2012 10:00:00 AM}, {id: 2, date: Mar 8 2012 08:00:00 AM}]; sortByDate(arr) { arr.sort(function(a,b){ return Number(new Date(a.readableDate)) - Number(newDate(b.readableDate)); }); return arr; }Vayamos al error. Lo primero es lo primero, la razón por la que no está undefined es que tiene el objeto allFeeds con feeds como una matriz. Cuando console.log(allFeeds.date) no hay una date de par clave-valor en su objeto allFeeds , por lo que le da undefined y cuando hace console.log(allFeeds.feeds.date) aquí debe usar console.log(allFeeds.feeds[0].date) porque allFeeds.feeds es una matriz.
Para resolver su problema, puede usar la siguiente solución.
a.sort((x,y)=>{return new Date(x.date.split("-").reverse().join("-")).getTime() - new Date(y.date.split("-").reverse().join("-")).getTime()}) Estamos haciendo esto porque Date(dateString) recibe dateString en formato yyyy-mm-dd y tiene una fecha en dd-mm-yyyy que no es aceptable, también lo estamos convirtiendo en un objeto Date porque como una cadena dd-mm-yyyy o yyyy-mm-dd no tiene mucho sentido, después de convertirlo al objeto Date podemos usar sus métodos para usar mejor los datos.