为了账号安全,请及时绑定邮箱和手机立即绑定

查找数组中最昂贵的项目

查找数组中最昂贵的项目

跃然一笑 2022-12-22 14:43:20
我有一个这样的数组: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 回答

?
DIEA

TA贡献1820条经验 获得超3个赞

你可以减少方法。检查价格并用于.访问最大项目名称。

来自 MDN:该reduce()方法对数组的每个元素执行一个缩减程序函数(您提供),从而产生单个输出值。

?被称为三元运算符if(它是and的缩写形式else

有关此处reduce工作原理的更多信息

现场演示:

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


查看完整回答
反对 回复 2022-12-22
?
慕斯王

TA贡献1864条经验 获得超2个赞

您可以使用 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>


查看完整回答
反对 回复 2022-12-22
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

你可以试试这个。


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。


查看完整回答
反对 回复 2022-12-22
?
波斯汪

TA贡献1811条经验 获得超4个赞

按价格对数组进行排序,然后弹出最后一项并获取 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)


查看完整回答
反对 回复 2022-12-22
  • 4 回答
  • 0 关注
  • 146 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号