estoy tratando de ordenar este tipo de matriz y he dado el resultado esperado a continuación, ¿alguien puede decirme cómo puedo hacer eso? Sé el tipo de matriz única, pero no sé el anidado.
var list = [ {name: "Bob" , item : [ {price:500},{price: 302} ]}, {name: "Tom" ,item : [ {price: 200} ,{price: 600}] }, ]; expected output// price:200 // price:302 // price:500 // price:600
//probé algo para una matriz normal qué hacer para este tipo de matriz
list.sort(function(a, b) { return ((a.name < b.name) ? -1 : ((a.name == b.name) ? 0 : 1)); }); for (var i = 0; i<list.length; i++) { alert(list[i].name + ", " + list[i].age); }
Puedes usar guión bajo.
_.chain(list).map((item) => item.item).flatten().pluck('price').sort().value()
Producción:
[200, 302, 500, 600]
O si quieres quedarte con las llaves:
_.chain(list).map((item) => item.item).flatten().sort((a,b) => a.price - b.price).value()
Producción:
0: {price: 200}, 1: {price: 302}, 2: {price: 500}, 3: {price: 600}
var list = [ { name: "Bob", item: [{ price: 500 }, { price: 302 }] }, { name: "Tom", item: [{ price: 200 }, { price: 600 }] }, ]; let sortThePrices = []; list.forEach((e) => { e.item.forEach((prop) => { sortThePrices.push(prop.price); }); }); sortThePrices.sort((a, b) => a - b); sortThePrices.forEach((price) => { console.log("Price: " + price); });
Traté de hacer que esta solución al problema sea fácil de entender, espero que esto ayude
var list = [ {name: "Bob" , item : [ {price:500},{price: 302} ]}, {name: "Tom" ,item : [ {price: 200} ,{price: 600}] }, ]; const compare = ( a, b ) => { if ( a.price < b.price ){ return -1; } if ( a.price > b.price ){ return 1; } return 0; } list.map(val => val.item.sort(compare)) console.log("list: ", list)
¡Espero que esto funcione para usted!