查找阵列中最昂贵的物品

时间:2020-08-07 04:36:01

标签: javascript arrays

我有一个这样的数组:

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的新手,真的不知道解决该问题的最佳方法。

4 个答案:

答案 0 :(得分:2)

您可以使用reduce方法。查看价格,然后使用.访问最大商品名称。

从MDN:reduce()方法在数组的每个元素上执行化简函数(由您提供),从而产生单个输出值。

?被称为ternary operator(它是ifelse的缩写)

有关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)