javascript - 如何排序
- 使用 JavaScript(冒泡排序)?
问题描述
我有 3
<ul id = "friends">
<li>Zvonar</li>
<li>Ivan</li>
<li>Petro</li>
</ul>
和JS代码:
let list = document.getElementsByTagName('li');
for (let i = 0; i < list.length; i++) {
for (let j = 0; j < list.length; j++) {
if (list[j].textContent > list[j + 1].textContent) {
buf = list[j].textContent;
list[j] = list[j + 1].textContent;
list[j + 1] = buf;
}
}
}
但它给了我一个错误,即 [j + 1] 在第四个字符串处未定义。
有没有办法使用 JavaScipt 对它们进行排序?将感谢任何答案。
解决方案
您正在引用一个不存在的数组索引。该列表从索引 0-2 开始,因此在最后一次迭代中,if 语句将中断,因为您正在执行 2+1 = list[3]。但是数组没有那个索引。由于它是数组的最后一个索引,并且已经根据 n-1 索引检查了该索引,因此没有理由检查它。所以我认为您可以将循环更改为:
for (let j = 0; j < list.length-1; j++) {...
我没有测试过这个,但我认为这会解决你的问题
推荐阅读
- java - 从maven项目运行jar时无法加载图像
- c++ - 如何使用 Windows API 获取音频会话 GUID
- mysql - MySql 在执行查询之前会分析/优化查询吗?
- string - kdb/q:如何将字符串操作函数应用于字符串向量以输出字符串向量?
- c - 介子不理解 libhandy 库依赖
- javascript - 来自 Redis 缓存的数据未分页
- javascript - 如何在Javascript中动态更改Leaflet Divicon Marker的背景颜色?
- python - 如何以正确的顺序打印年月
- android - 适合人员列表的组件。安卓工作室
- android - Dynamic Drawable:如何绘制由两个点定义的线,如果其中一个点发生变化可以重绘?