我有一个这样的数组:
let items = [
{
itemName: "Effective Programming Habits",
type: "book",
price: 13.99
},
{
itemName: "Chromebook 2",
type: "computer",
price: 399.99
},
{
itemName: "Programming 101",
type: "book",
price: 15.00
}
]
我需要创建一个遍历数组的函数,找到最昂贵的商品并返回itemName。我是JS的新手,真的不知道解决该问题的最佳方法。
答案 0 :(得分:2)
您可以使用reduce方法。查看价格,然后使用.
访问最大商品名称。
从MDN:
reduce()
方法在数组的每个元素上执行化简函数(由您提供),从而产生单个输出值。
?
被称为ternary operator(它是if
和else
的缩写)
有关reduce
工作原理的更多信息here
实时演示:
let items = [
{
itemName: "Effective Programming Habits",
type: "book",
price: 13.99
},
{
itemName: "Chromebook 2",
type: "computer",
price: 399.99
},
{
itemName: "Programming 101",
type: "book",
price: 15.00
}
]
let maxItem = items.reduce((max, min) => max.price > min.price ? max : min);
console.log(maxItem.itemName) //Chromebook 2
console.log(maxItem) //Full object
答案 1 :(得分:1)
您可以尝试一下。
function getMostExp(items) {
let mostExp = 0;
let name;
items.forEach(item => {
if(item.price > mostExp) {
mostExp = item.price;
name = item.itemName;
}
});
return name;
}
更新:
更新答案,以返回itemName
而不是price
。
答案 2 :(得分:1)
您可以使用Lodash库,它非常易于集成。 Lodash“ maxBy”可以从数组中找到最大值。 https://lodash.com/docs/4.17.15#maxBy
let items = [
{
itemName: "Effective Programming Habits",
type: "book",
price: 13.99
},
{
itemName: "Chromebook 2",
type: "computer",
price: 399.99
},
{
itemName: "Programming 101",
type: "book",
price: 15.00
}
]
console.log(_.maxBy(items, function(o) {
return o.price;
}));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
答案 3 :(得分:0)
按价格对数组进行排序,然后弹出最后一个项目并获得itemName:
items.sort((a,b) => a.price - b.price).pop().itemName
let items = [
{
itemName: "Effective Programming Habits",
type: "book",
price: 13.99
},
{
itemName: "Chromebook 2",
type: "computer",
price: 399.99
},
{
itemName: "Programming 101",
type: "book",
price: 15.00
}
]
console.log([...items].sort((a,b) => a.price - b.price).pop().itemName)