Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用for循环查找对象中的最大数字?_Javascript_Arrays_For Loop_Return - Fatal编程技术网

Javascript 如何使用for循环查找对象中的最大数字?

Javascript 如何使用for循环查找对象中的最大数字?,javascript,arrays,for-loop,return,Javascript,Arrays,For Loop,Return,这是我的数据集: let items = [ { itemName: "Effective Programming Habits", type: "book", price: 13.99 }, { itemName: "Creation 3005", type: "computer", price: 299.99 }, { itemName:

这是我的数据集:

let items = [
  {
    itemName: "Effective Programming Habits",
    type: "book",
    price: 13.99
  },
  {
    itemName: "Creation 3005",
    type: "computer",
    price: 299.99
  },
  {
    itemName: "Finding Your Center",
    type: "book",
    price: 15.00
  }
]
我尝试使用for循环查找并返回此对象中的最大数字。我知道可能有更简单、更高效的路线,但我专门研究for循环

但是,我想返回最大价格项目的itemName,而不是简单地返回最大价格。我的代码目前只返回最大价格:299.99,而不是itemName“Creation 3005”。如何使用for循环返回此信息?这就是我目前所拥有的

function mostExpensiveItemName(items) {
  let expensive = items[0].price || null; 
  let number = null;
  let name = null;
  for (let i = 0; i < items.length; i++) {
    number = items[i].price;
    expensive = Math.max(expensive, number); 
    }
   return expensive;
  }
函数mostExpensiveItemName(项){
设昂贵=物品[0]。价格| |空;
设number=null;
让name=null;
for(设i=0;i
仅当迭代的项目价格较高时,才重新分配外部变量:

let项目=[
{
itemName:“有效的编程习惯”,
键入:“书”,
售价:13.99
},
{
项目名称:“创建3005”,
键入:“计算机”,
价格:299.99
},
{
itemName:“找到你的中心”,
键入:“书”,
价格:15.00
}
];
函数mostExpensiveItemName(项){
设最高价格为0;
让最高价格的名字远走高飞;
用于(项目的常量{itemName,price}){
如果(价格>迄今最高价格){
最高价格far=价格;
高新技术企业名称远=项目名称;
}
}
console.log(HighestriceSofar的名称);
}

MOSTEX项目名称(项目)仅当迭代的项目价格较高时,才重新分配外部变量:

let项目=[
{
itemName:“有效的编程习惯”,
键入:“书”,
售价:13.99
},
{
项目名称:“创建3005”,
键入:“计算机”,
价格:299.99
},
{
itemName:“找到你的中心”,
键入:“书”,
价格:15.00
}
];
函数mostExpensiveItemName(项){
设最高价格为0;
让最高价格的名字远走高飞;
用于(项目的常量{itemName,price}){
如果(价格>迄今最高价格){
最高价格far=价格;
高新技术企业名称远=项目名称;
}
}
console.log(HighestriceSofar的名称);
}

MOSTEX项目名称(项目)
您可以像这样使用
forEach

let项目=[
{
itemName:“有效的编程习惯”,
键入:“书”,
售价:13.99
},
{
项目名称:“创建3005”,
键入:“计算机”,
价格:299.99
},
{
itemName:“找到你的中心”,
键入:“书”,
价格:15.00
}
]
设maxPrice=0,乘积;
items.forEach(el=>{
如果(el.price>maxPrice){
maxPrice=el.price;
product=Object.assign({},el);//确保创建了新副本而不是引用
}
});

log(product,maxPrice)
您可以像这样使用
forEach

let项目=[
{
itemName:“有效的编程习惯”,
键入:“书”,
售价:13.99
},
{
项目名称:“创建3005”,
键入:“计算机”,
价格:299.99
},
{
itemName:“找到你的中心”,
键入:“书”,
价格:15.00
}
]
设maxPrice=0,乘积;
items.forEach(el=>{
如果(el.price>maxPrice){
maxPrice=el.price;
product=Object.assign({},el);//确保创建了新副本而不是引用
}
});
console.log(产品,maxPrice)
函数mostExpensiveItemName(项目){
设昂贵=项目[0];
设number=null;
让name=null;
for(设i=0;i
函数mostExpensiveItemName(项目){
设昂贵=项目[0];
设number=null;
让name=null;
for(设i=0;i
以下是我要做的:

函数mostExpensive(objArray){
const m=objArray.map(o=>o.price);
返回objArray[m.indexOf(Math.max(…m))];
}
让项目=[
{
itemName:“有效的编程习惯”,
键入:“书”,
售价:13.99
},
{
项目名称:“创建3005”,
键入:“计算机”,
价格:299.99
},
{
itemName:“找到你的中心”,
键入:“书”,
价格:15.00
}
];
const me=最重要的(项目);

console.log(me);console.log(me.price)以下是我要做的:

函数mostExpensive(objArray){
const m=objArray.map(o=>o.price);
返回objArray[m.indexOf(Math.max(…m))];
}
让项目=[
{
itemName:“有效的编程习惯”,
键入:“书”,
售价:13.99
},
{
项目名称:“创建3005”,
键入:“计算机”,
价格:299.99
},
{
itemName:“找到你的中心”,
键入:“书”,
价格:15.00
}
];
const me=最重要的(项目);

console.log(me);console.log(me.price)
如果您决定为
循环寻找
的替代方案,使用
reduce
这些问题非常简单

const selectHigherPrice=(state,item)=>state.price>item.price?国家:项目
const initialState=项[0]
物品。减少(选择高价,初始状态)
//一行
items.reduce((状态,项目)=>state.price>item.price?状态:项目)
  • 状态
    初始化为
    项目
    列表中的第一个项目
  • 为数组中的每个项目调用
    selectHigherPrice
    函数
  • 如果当前
    状态.price
    属性大于
    项目.price
    属性:
    • 返回状态
    • 否则,当为列表中的下一个项目调用
      selectHigherPrice
      时,将返回
      item
      ,并成为
      state
      变量
如果您确定您的列表将包含项目,则可以省略seco
function mostExpensiveItemName(items) {
   let expensive = items[0]; 
   let number = null;
   let name = null;
   for (let i = 0; i < items.length; i++) {
      number = items[i];
      expensive = expensive.price < number.price ? number:;
   }
   return expensive;
}
function mostExpensiveItemName(items) {
  let item = mostExpensiveItem(items);
    return item ? item.Name : undefined;
}

function mostExpensiveItem(items) {
  let max;

  for ( const item of items ) {
     max = !item                  ? item   // 1st item in list
         : item.price > max.price ? item   // replace existing w/new most-expensive item
         :                          max  ; // keep existing
  }

  return max ;
}