Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.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
html javascript-对象数组_Javascript_Html_Arrays - Fatal编程技术网

html javascript-对象数组

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

在通过prompt()函数收到五本书的信息后,我创建了一个网页,打印出最昂贵的书的名称。但是当我打印一本昂贵的书的名字时,只打印第一本书的标题。你知道为什么吗



创建书籍对象数组
功能书(标题、作者、价格){
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];
}