var originalArray = [
{
name: 'Store1',
inventory: [
{ name: 'Oranges', qt: [{ id: "something", time: 11 }, { id: "something", time: 44 }, { id: "something", time: 53 }] },
{ name: 'Mango', qt: [{ id: "something", time: 3 }, { id: "something", time: 91 }, { id: "something", time: 3 }] },
{ name: 'Kiwi', qt: [{ id: "something", time: 2 }, { id: "something", time: 91 }, { id: "something", time: 3 }] },
{ name: 'Papaya', qt: [{ id: "something", time: 8 }, { id: "something", time: 91 }, { id: "something", time: 3 }] }
]
},
{
name: 'Store2',
inventory: [
{ name: 'Pizza', qt: [{ id: "something", time: 31 }, { id: "something", time: 11 }, { id: "something", time: 23 }] },
{ name: 'Burger', qt: [{ id: "something", time: 1 }, { id: "something", time: 11 }, { id: "something", time: 23 }] },
{ name: 'IceCream', qt: [{ id: "something", time: 111 }, { id: "something", time: 11 }, { id: "something", time: 323 }] }
]
}
];
For example in the above array, inventory and qt are nested keys with an array of objects as their value.
Store2 has { id: "something", time: 323 } which is a higher time than any item in Store1
After sort, Store2 will be first in the list and Store1 will be in second position, and so on, time descending
My code is not working to sort the stores.
It should not sort the nested array in inventory & qt, just sort the Store order by time descending
const sorted = originalArray
.map(store => store.inventory
.map(inv => inv.qt
.map(item => Object.entries(item)[1])))
.sort((a, b) => b[1].time - a[1].time)
.map(item => item[1])
console.log(JSON.stringify(sorted));
EXPECTED OUTPUT
// sorted array
[
{
name: 'Store2',
inventory: [
{ name: 'Pizza', qt: [{ id: "something", time: 31 }, { id: "something", time: 11 }, { id: "something", time: 23 }] },
{ name: 'Burger', qt: [{ id: "something", time: 1 }, { id: "something", time: 11 }, { id: "something", time: 23 }] },
{ name: 'IceCream', qt: [{ id: "something", time: 111 }, { id: "something", time: 11 }, { id: "something", time: 323 }] }
]
},
{
name: 'Store1',
inventory: [
{ name: 'Oranges', qt: [{ id: "something", time: 11 }, { id: "something", time: 44 }, { id: "something", time: 53 }] },
{ name: 'Mango', qt: [{ id: "something", time: 3 }, { id: "something", time: 91 }, { id: "something", time: 3 }] },
{ name: 'Kiwi', qt: [{ id: "something", time: 2 }, { id: "something", time: 91 }, { id: "something", time: 3 }] },
{ name: 'Papaya', qt: [{ id: "something", time: 8 }, { id: "something", time: 91 }, { id: "something", time: 3 }] }
]
}
]
sorted? Notice that after themap, you have an array of arrays of arrays of arrays.Object.entries(item)[1]instead of simplyitem.time?