html javascript-对象数组
在通过prompt()函数收到五本书的信息后,我创建了一个网页,打印出最昂贵的书的名称。但是当我打印一本昂贵的书的名字时,只打印第一本书的标题。你知道为什么吗html javascript-对象数组,javascript,html,arrays,Javascript,Html,Arrays,在通过prompt()函数收到五本书的信息后,我创建了一个网页,打印出最昂贵的书的名称。但是当我打印一本昂贵的书的名字时,只打印第一本书的标题。你知道为什么吗 创建书籍对象数组 功能书(标题、作者、价格){ this.title=标题; this.author=作者; 这个价格=价格; } 创建书籍对象数组 var i; var bookArray=新数组(); var-textplit; 对于(i=0;imost){…这是错误的,应该是if(bookArray[i].price>most
创建书籍对象数组
功能书(标题、作者、价格){
this.title=标题;
this.author=作者;
这个价格=价格;
}
创建书籍对象数组
var i;
var bookArray=新数组();
var-textplit;
对于(i=0;i<5;i++){
var input=prompt(“输入书名、作者和价格,用逗号分隔。”,”);
textSplit=input.split(“,”);
var book=新对象();
book.title=textSplit[0];
book.author=textSplit[1];
book.price=parseInt(textSplit[2]);
bookArray[i]=书本;
}
对于(i=0;i”;
}
var most=bookArray[0];
对于(i=0;imost){
most=bookArray[i]。价格;
}
//document.write(bookArray[i].title+“
”;
}
文件。写(“
最贵的书是”+most.title);
var most
引用了您的第一本书。在循环中,您将价格与对象进行比较,而不是与对象的价格进行比较
请尝试:
bookArray[i].price>most.price
您只打印书籍的标题,因为您的最终打印行是:
document.write("<br> The most expensive book is " + most.title);
document.write(“
最贵的书是”+most.title);
要显示标题、作者和价格,请执行以下操作:
document.write("<br> The most expensive book is " + most.title + most.author+ most.price);
document.write(
最贵的书是“+most.title+most.author+most.price”);
关于只显示第一本书的页面,您应该比较most对象的价格,而不是对象的价格。在for循环中,您检查价格是否超过对象
if(bookArray[i].price>most){…
这是错误的,应该是if(bookArray[i].price>most.price){…
。然后您必须分配most=bookArray[i]
;找到最大值,然后得到包含最大值的整个对象,通过这样做,您可以显著减少行数
let max = Math.max(...bookArray.map(x => x.price))
let maxBook = bookArray.find(x => x.price === max)
以下是完整的代码:
创建书籍对象数组
功能书(标题、作者、价格){
this.title=标题;
this.author=作者;
这个价格=价格;
}
创建书籍对象数组
var i;
var bookArray=新数组();
var-textplit;
对于(i=0;i<5;i++){
var input=prompt(“输入书名、作者和价格,用逗号分隔。”,”);
textSplit=input.split(“,”);
var book=新对象();
book.title=textSplit[0];
book.author=textSplit[1];
book.price=parseInt(textSplit[2]);
bookArray[i]=书本;
}
var max=Math.max(…bookArray.map(x=>x.price))
var maxBook=bookArray.find(x=>x.price==max)
document.write(“
最贵的书是”+maxBook.title+maxBook.author);
在最后一个循环中,您将对象most
与第i个bookarray
价格进行比较。您还将most
对象仅分配给价格,而不是第i个bookarray
您只需按如下方式更改这些引用
var most = bookArray[0];
for(i = 0; i <bookArray.length; ++i)
{
if(bookArray[i].price > most.price)
most = bookArray[i];
}
var most=bookArray[0];
对于(i=0;i最大价格)
most=bookArray[i];
}
第一本书之所以打印,是因为您正在将对象与数字进行比较。您应该使用对象的.price属性来比较对象并将其分配给most
var most=bookArray[0];
对于(i=0;i最大价格){
most=bookArray[i];
}
}
如果你的声明有误导性,那么剩下的就没问题了:
if(bookArray[i].price > most){
most = bookArray[i].price;
}
使用以下命令:
if(bookArray[i].price > most.price){
most = bookArray[i];
}
创建书籍对象数组
功能书(标题、作者、价格){
this.title=标题;
this.author=作者;
这个价格=价格;
}
创建书籍对象数组
var i;
var bookArray=新数组();
var-textplit;
对于(i=0;i<3;i++){
var input=prompt(“输入书名、作者和价格,用逗号分隔。”,”);
textSplit=input.split(“,”);
var book=新对象();
book.title=textSplit[0];
book.author=textSplit[1];
book.price=parseInt(textSplit[2]);
bookArray[i]=书本;
}
对于(i=0;i”;
}
var most=bookArray[0];
对于(i=0;imost.price){
most=bookArray[i];
}
//document.write(bookArray[i].title+“
”;
}
document.write(
最贵的书是“+most.title+”、“+most.author+”、“+most.price”);
var most = bookArray[0];
for(i=0; i<bookArray.length; ++i){
if(bookArray[i].price > most.price){
most = bookArray[i];
}
}
if(bookArray[i].price > most){
most = bookArray[i].price;
}
if(bookArray[i].price > most.price){
most = bookArray[i];
}