uka*_*ric 1 javascript arrays sorting
我有originalArray包含对象。我将如何inventory按键值对数组进行排序short:
var originalArray = [
{
name: 'Store1',
inventory: [
{ name: 'Oranges', qt: { short: 11, long: 3, med: 9 } },
{ name: 'Mango', qt: { short: 3, long: 91, med: 3 } },
{ name: 'Kiwi', qt: { short: 2, long: 91, med: 3 } },
{ name: 'Papaya', qt: { short: 8, long: 91, med: 3 } }
]
},
{
name: 'Store2',
inventory: [
{ name: 'Pizza', qt: { short: 31, long: 11, med: 23 } },
{ name: 'Burger', qt: { short: 1, long: 11, med: 23 } },
{ name: 'IceCream', qt: { short: 111, long: 11, med: 323 } }
]
}
];
Run Code Online (Sandbox Code Playgroud)
期望的输出是:
var sorted = [
{
name: 'Store1',
inventory: [
{ name: 'Kiwi', qt: { short: 2, long: 91, med: 3 } },
{ name: 'Mango', qt: { short: 3, long: 91, med: 3 } },
{ name: 'Papaya', qt: { short: 8, long: 91, med: 3 } },
{ name: 'Oranges', qt: { short: 11, long: 3, med: 9 } }
]
},
{
name: 'Sotre2',
inventory: [
{ name: 'Burger', qt: { short: 1, long: 11, med: 23 } },
{ name: 'Pizza', qt: { short: 31, long: 11, med: 23 } },
{ name: 'IceCream', qt: { short: 111, long: 11, med: 323 } }
]
}
];
Run Code Online (Sandbox Code Playgroud)
除了inventory按short值排序的数组之外,我不需要任何东西。
inventoryarray 的所有项都按 dsc 顺序排序。性能不是问题,语言规范限制也不是问题,唯一的限制是我不能使用外部库。
有没有一种理智的方法可以做到这一点,或者我需要在inventory中间变量中对其进行排序并创建带有inventorysorted 的新对象数组。
var originalArray = [
{
name: 'Store1',
inventory: [
{ name: 'Oranges', qt: { short: 11, long: 3, med: 9 } },
{ name: 'Mango', qt: { short: 3, long: 91, med: 3 } },
{ name: 'Kiwi', qt: { short: 2, long: 91, med: 3 } },
{ name: 'Papaya', qt: { short: 8, long: 91, med: 3 } }
]
},
{
name: 'Store2',
inventory: [
{ name: 'Pizza', qt: { short: 31, long: 11, med: 23 } },
{ name: 'Burger', qt: { short: 1, long: 11, med: 23 } },
{ name: 'IceCream', qt: { short: 111, long: 11, med: 323 } }
]
}
];
for (var i = 0; i < originalArray.length; i++) {
originalArray[i].inventory.sort(function(a, b) { return a.qt.short - b.qt.short; });
}
console.log(originalArray);Run Code Online (Sandbox Code Playgroud)