У меня есть индексированный список продуктов, и у каждого продукта есть цена, а также массив оптовых цен.Я хочу отфильтровать все оптовые цены, которые выше базовой цены продукта.Каков наилучший способ сделать это с помощью функций ES6, таких как деструктуризация?
Вот список цен:
prices: {
foo: {
price: 160,
bulkPricing: [
{price: 150, minimumQuantity: 10},
{price: 140, minimumQuantity: 20},
{price: 130, minimumQuantity: 30}
]
},
bar: {
price: 160,
bulkPricing: [
{price: 180, minimumQuantity: 10},
{price: 140, minimumQuantity: 20},
{price: 130, minimumQuantity: 30}
]
}
}
Вы можете видеть, что первая оптовая цена для второго продукта выше, чембазовая цена, поэтому она должна быть удалена.Таким образом, результат должен быть:
prices: {
foo: {
price: 160,
bulkPricing: [
{price: 150, minimumQuantity: 10},
{price: 140, minimumQuantity: 20},
{price: 130, minimumQuantity: 30}
]
},
bar: {
price: 160,
bulkPricing: [
{price: 140, minimumQuantity: 20},
{price: 130, minimumQuantity: 30}
]
}
}
Я могу сделать это так:
Object.entries(prices).map(([sku, product])=> {
return {
[sku]: {
...product,
bulkPricing: product.bulkPricing.filter(bp => bp.price < product.price)
}
}
}
)
Но это, конечно, возвращает массив:
[ { foo: { price: 160, bulkPricing: [{price: 150, minimumQuantity: 10},
{price: 140, minimumQuantity: 20},
{price: 130, minimumQuantity: 30}] } },
{ bar: { price: 160, bulkPricing: [{price: 140, minimumQuantity: 20},
{price: 130, minimumQuantity: 30}] } } ]
Так что яугадайте, мой вопрос, с последними методами ES6, как я могу фильтровать элементы в объекте на основе массивов в этих элементах и возвращать этот измененный объект?