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 ;
}