Actualmente tengo un conjunto de datos que contiene una matriz de objetos que tienen 12 índices y 2 valores cada uno.
Cada uno de los índices contiene las claves 'meses' y 'año'. Meses es un subconjunto y año es un valor de cadena (se podría convertir fácilmente en un int).
Estoy buscando ordenar mi matriz de objetos por el valor de la clave del año
. Por ejemplo, actualmente, mis datos se ven así
0: {months: {…}, year: "2017"} 1: {months: {…}, year: "2019"} 2: {months: {…}, year: "2018"} 3: {months: {…}, year: "2011"} 4: {months: {…}, year: "2010"} 5: {months: {…}, year: "2012"} 6: {months: {…}, year: "2013"} 7: {months: {…}, year: "2015"} 8: {months: {…}, year: "2014"} 9: {months: {…}, year: "2016"}
Estoy tratando de ordenar esto desde los años más bajos -> más altos. Intenté usar el mapa, pero no pude encontrar la función correcta. Cualquier consejo sería genial, gracias.
Esto es bastante simple. Ordene la matriz usando la función Array.prototype.sort
. Como el year
es un valor de cadena, debe analizarlo como un número entero para clasificarlo. Prueba esto-
const data = [ { months: null, year: "2017" }, { months: null, year: "2019" }, { months: null, year: "2018" }, { months: null, year: "2011" }, { months: null, year: "2010" }, { months: null, year: "2012" }, { months: null, year: "2013" }, { months: null, year: "2015" }, { months: null, year: "2014" }, { months: null, year: "2016" }, ]; data.sort((a, b) => parseInt(a.year) - parseInt(b.year)); console.log(data);
Usando Array.sort pase la función de comparación.
const arr = [{months:[],year:"2017"},{months:[],year:"2019"},{months:[],year:"2018"},{months:[],year:"2011"},{months:[],year:"2010"},{months:[],year:"2012"},{months:[],year:"2016"},]; const res = arr.sort((a, b) => a.year - b.year); console.log(res);
Prueba esto:
let data = [ {months: {a: 'a'}, year: "2017"}, {months: {a: 'a'}, year: "2019"}, {months: {a: 'a'}, year: "2018"}, {months: {a: 'a'}, year: "2011"}, {months: {a: 'a'}, year: "2010"}, {months: {a: 'a'}, year: "2012"}, {months: {a: 'a'}, year: "2013"}, {months: {a: 'a'}, year: "2015"}, {months: {a: 'a'}, year: "2014"}, {months: {a: 'a'}, year: "2016"} ]; let sorted = data.sort((a, b) => a.year - b.year); console.log(sorted);