Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.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
Javascript 使用数组对项目进行排序_Javascript_Jquery - Fatal编程技术网

Javascript 使用数组对项目进行排序

Javascript 使用数组对项目进行排序,javascript,jquery,Javascript,Jquery,您好,我想对链接列表进行排序,以匹配数组顺序: 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<

您好,我想对链接列表进行排序,以匹配数组顺序:

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']
如何调整或重写此排序函数,使其对文本和数字大小选项进行排序?

将链接存储在a中,通过其
数据值
属性键入,然后将
顺序
数组添加到链接中

constlinks=[…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')。追加(orderedLinks)

请注意,我已将
顺序
数组过滤到实际存在链接的位置。

排序后的数组应该是什么样子的?是否保证每个
数据值只能有一个链接
或者可以有多个链接?如果是后者,什么应该决定二次排序?@Phil yes每个站点只有一个链接value@Pedro很酷,只是为了确保我的答案不会让你的应用程序工作得太完美,我做的唯一改变就是在页面中显示orderedLinks。谢谢你的帮助@佩德罗,我刚才在我的回答中加了这个,但从你问题中的代码来看,我想你已经知道怎么做了
(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);
  })();