我正在做一项玻璃作业,我需要编写一个循环。我为房屋制作了一系列物品。我创建了一个 For 循环来按房屋价格对数组进行排序。该数组显示在网页的控制台中,但不显示在实际网页中。以下是控制台显示内容、网页显示内容和我的代码的摘录。
console log
(4) [{…}, {…}, {…}, {…}]
0:{id:'house4',故事:1,平方英尺:1130,颜色:'白色',年份:1961,...}
1:{id:'house1',故事:1,平方英尺:1285,颜色:'米色',年份:2018,...}
2:{id:'house2',故事:1,平方英尺:1560,颜色:'棕色',年份:1983,...}
3:{id:'house3',故事:2,平方英尺:2975,颜色:'tan',年份:2008,...}
长度:4
[[原型]]:数组(0)
webpage
[对象对象],[对象对象],[对象对象],[对象对象]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<p id ="houses"></p>
<script>
let houses = [{id:"house1", stories:1, squareFoot:1285, color:"beige", year:2018, bedrooms:3, bathrooms:2, price:285000},
{id:"house2", stories:1, squareFoot:1560, color:"brown", year:1983, bedrooms:3, bathrooms:3, price:345000},
{id:"house3", stories:2, squareFoot:2975, color:"tan", year:2008, bedrooms:4, bathrooms:3, price:415000},
{id:"house4", stories:1, squareFoot:1130, color:"white", year:1961, bedrooms:2, bathrooms:2, price:215000}];
for (i=0; i<1; i++) {
houses.sort((a, b) => a.price - b.price);
document.getElementById("houses").innerHTML=houses;
}
//console.log(houses);
</script>
</body>
</html>
我看过几个关于数组排序的视频,但它们都只显示到控制台日志。我尝试修改我的代码以使其与我的讲座视频中使用的示例类似,但仍然没有输出。任何帮助将不胜感激。谢谢。
有几点值得注意。
请注意,
for
循环内的两个语句不依赖于索引i
:
houses.sort((a, b) => a.price - b.price);
document.getElementById("houses").innerHTML=houses;
这意味着每次循环时您只是重复相同的操作。所以不需要循环!
sort
方法将数组排序为一行。
但是,如果你的作业是使用
for
循环,我猜你不能使用内置的sort
方法,重点是你要编写自己的排序函数。
这取决于你;请注意,事实上,以下
for
:
for (i=0; i<1; i++)
仅循环一次。从这里开始,您将必须更换线路
houses.sort((a, b) => a.price - b.price);
具有您自己的排序功能。
您已经看到,将 HTML 段落的文本设置为
houses
不会显示数组的内容。那是因为它是 - 令人惊讶 - 一个数组1。 HTML 处理文本,因此要实现您的目标,您首先需要将 houses
转换为文本。
有多种方法可以做到这一点,但最佳实践可能是使用
JSON.stringify
方法,将对象的内容解析 为字符串。您可以在以下代码片段中看到其效果:
let houses = [{id:"house1", stories:1, squareFoot:1285, color:"beige", year:2018, bedrooms:3, bathrooms:2, price:285000},
{id:"house2", stories:1, squareFoot:1560, color:"brown", year:1983, bedrooms:3, bathrooms:3, price:345000},
{id:"house3", stories:2, squareFoot:2975, color:"tan", year:2008, bedrooms:4, bathrooms:3, price:415000},
{id:"house4", stories:1, squareFoot:1130, color:"white", year:1961, bedrooms:2, bathrooms:2, price:215000}];
houses.sort((a, b) => a.price - b.price);
document.getElementById("houses").innerHTML = JSON.stringify(houses);
console.log(houses);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<p id ="houses"></p>
</body>
</html>
1任何其他对象都会以相同的方式表现。