javascript - 如何按文本内容(包括数字)对列表进行排序?
问题描述
我正在尝试按从最低到最高的距离(56 公里、96 公里、6 公里)对这个列表进行排序。我知道有更简单的方法来处理和添加 li 到 ul,但我需要这种形式。问题是我完全没有想法,也没有在互联网上找到任何东西。
<ul class="collapsible z-depth-0 assignment " id="assigment_list" style="border: none;">
</ul>
const assignmentList = document.querySelector('.assignment');
const li = `
<li >
<div class="collapsible-header grey lighten-4 right-align"> Nick, 56km from you </div>
</li>
<li >
<div class="collapsible-header grey lighten-4 right-align">Niclas, 96km from you </div>
</li>
<li >
<div class="collapsible-header grey lighten-4 right-align"> Max, 6km from you </div>
</li>
`;
html += li;
assignmentList.innerHTML = html
解决方案
如果您将距离作为字符串而不是数字,则可以使用该parseInt
函数先将它们转换为数字,然后再排序。像这样的东西
const distances = ["96km", "6km", "56km"]
// Use parseInt function to get the kilometers as number
const intDistances = distances.map((stringDistance) => {
// Note that, parseInt stops at the first character that is not number-like
// So parseInt("6km") will return 6
const intDistance = parseInt(stringDistance, 10);
return intDistance;
})
// Sorted
intDistances.sort((a, b) => a - b);
推荐阅读
- sql - 在 SQL 中获取没有循环的连续行值
- swiftui - 使用 @SectionedFetchRequest ,当我重新打开我的应用程序时 section.id 发生了变化
- python - 无论剂量多少,在每个疫苗名称下打印一个名称,Odoo 14
- android - 在 ionic 5 上将 SDK 版本更新为 30 时出错
- laravel - 测试服务器在访问浏览器时询问用户名和密码
- javascript - 模型打不开
- bash - 在 bash 脚本中,在 for 循环中更新(依次添加值)变量
- amazon-web-services - AWS Ubuntu SSH 突然断开连接,无法重新连接
- python - 适用于 SQL Server 的 Python pyodbc 驱动程序 (macOS M1 PRO)
- javascript - 引导模式中的元滑块跳跃