我想要创建一个函数,根据对象的price属性在对象数组中找到最大的项。函数应接受项数组作为参数,并返回最昂贵项的名称。
这里我的思路是使用.map()来循环数组并锁定价格属性。然后使用.reduce()和Math.max()查找最大的数字。我相信,到目前为止,我已经成功地做到了这一点。现在,我需要编写代码来返回与先前返回的最大价格相关联的itemName。
上述所有内容都应包含在同一项职能中。下面是我的代码示例。
let items = [
{
itemName: "Good Habits",
type: "book",
price: 13.99
},
{
itemName: "Macbook Pro",
type: "computer",
price: 299.99
},
{
itemName: "Center of Gravity",
type: "book",
price: 15.00
}
]
function mostExpensiveItem(items){
let most = items.map(o => o.price).reduce(function(a, b) {
return Math.max(a, b);
})
console.log(most)``
}
发布于 2020-06-18 10:39:57
function mostExpensiveItem(items) {
return items.reduce((p, v) => p.price > v.price ? p : v).itemName;
}
发布于 2020-06-18 10:41:31
你可以这样做:
let items = [
{
itemName: "Good Habits",
type: "book",
price: 13.99
},
{
itemName: "Macbook Pro",
type: "computer",
price: 299.99
},
{
itemName: "Center of Gravity",
type: "book",
price: 15.00
}
]
var res = items.reduce((acc, elem)=>{
if(!acc.price || acc && acc.price < elem.price){
acc = elem
}
return acc;
},{});
console.log(res.itemName)
或者,你可以根据价格进行排序,得到第一个元素。
let items = [
{
itemName: "Good Habits",
type: "book",
price: 13.99
},
{
itemName: "Macbook Pro",
type: "computer",
price: 299.99
},
{
itemName: "Center of Gravity",
type: "book",
price: 15.00
}
]
console.log(items.sort((a,b)=> b.price - a.price)[0].itemName);
发布于 2020-06-18 10:47:03
您可以获得一个具有相同的最大过程的对象数组,并映射对象的名称。
let items = [{ itemName: "Good Habits", type: "book", price: 13.99 }, { itemName: "Macbook Pro", type: "computer", price: 299.99 }, { itemName: "Center of Gravity", type: "book", price: 15.00 }],
result = items
.reduce((r, o, i) => {
if (!i || r[0].price < o.price) return [o];
else if (r[0].price === o.price) r.push(o);
return r;
}, [])
.map(({ itemName }) => itemName);
console.log(result);
https://stackoverflow.com/questions/62457090
复制相似问题