gpt4 book ai didi

javascript - 如何使用map()和find()方法搜索对象数组中的最小值?

转载 作者:行者123 更新时间:2023-12-02 22:39:26 26 4
gpt4 key购买 nike

任务

有一个以下形式的对象数组:

{
title: 'Macbook Air',
offers: [
{
seller: 'Avic',
price: 1200
},
{
seller: 'Citrus',
price: 1600
}
]
}

有必要转换为以下形式的对象数组:

{
title: 'Macbook Air',
bestOffer: {
name: 'Avic',
price: 1200
}
}

其中 bestOffer 是具有最低价格值的报价。
使用map()find()写成一行。

代码

"use_strict";

var productList = [
{
title: "Product X1",
offers: [
{
seller: "Company X1",
price: 400
},

{
seller: "Company X2",
price: 200
},

{
seller: "Company X3",
price: 300
}
]
},

{
title: "Product Y1",
offers: [
{
seller: "Company Y1",
price: 1700
},

{
seller: "Company Y2",
price: 1600
},

{
seller: "Company Y3",
price: 1500
},

{
seller: "Company Y4",
price: 1400
}
]
},

{
title: "Product Z1",
offers: [
{
seller: "Company Z1",
price: 50
},

{
seller: "Company Z2",
price: 60
},

{
seller: "Company Z3",
price: 10
},

{
seller: "Company Z4",
price: 90
},

{
seller: "Company Z5",
price: 70
}
]
}
];

const destinations = productList.map(item =>
({
title: item.title,
bestOffer: ({
name: item.offers[0].seller, // TODO: How to implement find() method????
price: item.offers[0].price
})
})
)
console.log(destinations)

我的代码用于重组新数组的对象,但我不知道如何实现 find() 方法来搜索最小值。在这种情况下可以使用 find() 方法吗?

最佳答案

您可以使用Array.reduce()按价格找到最佳报价。在每次迭代中,检查当前商品的 (o) 价格是否低于累加器 (r) 的价格,并选择最低的价格。

const productList = [{"title":"Product X1","offers":[{"seller":"Company X1","price":400},{"seller":"Company X2","price":200},{"seller":"Company X3","price":300}]},{"title":"Product Y1","offers":[{"seller":"Company Y1","price":1700},{"seller":"Company Y2","price":1600},{"seller":"Company Y3","price":1500},{"seller":"Company Y4","price":1400}]},{"title":"Product Z1","offers":[{"seller":"Company Z1","price":50},{"seller":"Company Z2","price":60},{"seller":"Company Z3","price":10},{"seller":"Company Z4","price":90},{"seller":"Company Z5","price":70}]}]

const findBestOffer = ({ offers = [] }) => offers
.reduce((r, o) => o.price < r.price ? o : r)

const formatOffer = item => item ? ({
name: item.seller,
price: item.price
}) : 'none'

const destinations = productList.map(item => ({
title: item.title,
bestOffer: formatOffer(findBestOffer(item))
}))

console.log(destinations)

如果您需要使用 Array.map()Array.find() - 将数组映射到价格数字,并使用 获取最低的价格>Math.min(),然后找到具有该价格的商品:

const productList = [{"title":"Product X1","offers":[{"seller":"Company X1","price":400},{"seller":"Company X2","price":200},{"seller":"Company X3","price":300}]},{"title":"Product Y1","offers":[{"seller":"Company Y1","price":1700},{"seller":"Company Y2","price":1600},{"seller":"Company Y3","price":1500},{"seller":"Company Y4","price":1400}]},{"title":"Product Z1","offers":[{"seller":"Company Z1","price":50},{"seller":"Company Z2","price":60},{"seller":"Company Z3","price":10},{"seller":"Company Z4","price":90},{"seller":"Company Z5","price":70}]}]

const findBestOffer = ({ offers = [] }) => {
const min = Math.min(...offers.map(o => o.price))

return offers.find(o => o.price === min)
}

const formatOffer = item => item ? ({
name: item.seller,
price: item.price
}) : 'none'

const destinations = productList.map(item => ({
title: item.title,
bestOffer: formatOffer(findBestOffer(item))
}))

console.log(destinations)

关于javascript - 如何使用map()和find()方法搜索对象数组中的最小值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58632647/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com