javascript - 使用数组对项目进行排序
问题描述
您好我想对链接列表进行排序以匹配数组顺序:
List:
<a href="" data-value="10">10</a>
<a href="" data-value="6">6</a>
<a href="" data-value="8">8</a>
...
<a href="" data-value="m">M</a>
<a href="" data-value="s">S</a>
Array for Ordering:
['6', '8', '10', '12', '14', 'xs', 's', 'm', 'l', 'xl', 'xxl']
我正在使用以下内容对文本选项进行很好的排序,但不是数字选项:
(function () {
var order = ['6', '8', '10', '12', '14', 'xs', 's', 'm', 'l', 'xl', 'xxl'];
var $wrapper = $('.size-filter');
$wrapper.find('a').sort(function (a, b) {
var aSize = $(a).data('value'), bSize = $(b).data('value');
return order.indexOf(aSize) - order.indexOf(bSize);
}).appendTo($wrapper);
})();
如何调整此排序功能或重写它以便对文本和数字大小选项进行排序?
解决方案
将链接存储在 a 中Map
,以它们的data-value
属性为键,然后将数组映射到链接order
const links = [...document.querySelectorAll('a[data-value]')].reduce((map, link) =>
map.set(link.dataset.value, link), new Map())
const orderedLinks = order.filter(k => links.has(k)).map(k => links.get(k))
然后,您可以使用 jQuery 将这些链接附加到另一个元素
$('some-element-selector').append(orderedLinks)
请注意,我已将order
数组过滤为实际存在链接的数组。
推荐阅读
- vba - MSXML2 在 VBA 中返回文件格式 (XML)
- c# - 如何使用 Protobuf 在我的谷歌操作中将字节数组显示为图像?
- python-3.x - 检查 ASCII pyspark 数据帧
- android - 问:无法从对象列表中返回特定属性?
- python - 使用 pandas 从 SQL 表中提取带双引号的数据和不带引号的标题
- python - Requirements.txt 没有在 Azure 应用程序中仅安装“请求”包
- qt - 我不明白为什么我的代码中出现了这个未定义的错误
- firebase - Firebase 安排具有多个 crontab 的函数
- javascript - 如何使用 GET 或 POST 以 HTML 表单 [CODE ATTACHED] 从 javascript 文件中获取 CITY 值?
- scala - Akka 流中的 groupBy 是否创建并行运行的子流?