Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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 从节点排序字母数字li_Javascript_Node.js_Sorting - Fatal编程技术网

Javascript 从节点排序字母数字li

Javascript 从节点排序字母数字li,javascript,node.js,sorting,Javascript,Node.js,Sorting,从html页面中,我可以通过querySelectorAll获取节点列表。 之后,通过一个循环,我得到了我需要工作的节点,因此: 给定具有此格式的节点列表的节点: <div id="search_filters"> <section class="facet clearfix"> <p>something3</p> <ul> <li>text1 abc-def 200-201<span>(

从html页面中,我可以通过
querySelectorAll获取节点列表。
之后,通过一个循环,我得到了我需要工作的节点,因此:

给定具有此格式的节点列表的节点:

<div id="search_filters">
 <section class="facet clearfix">
   <p>something3</p>
   <ul>
     <li>text1 abc-def 200-201<span>(35)</span></li>
     <li>text2 hjk-lef 203 <span>(11)</span></li>
     <li>text3 fgh 204 <span>(250)</span></li>
     <li>text4 sfsa 205 <span>(100)</span></li>
   </ul>
  </section>
</div>
我想这样对它们进行排序(最后一个数字是排序的重要因素,因此在案例(3)中,重要因素是201):

我曾经认为可以在临时节点上修剪单词,而不是按降序排列数字,但是在我需要工作的节点上,我很难按正确的顺序排列


有什么想法吗

下面是我使用and使其工作的方法


const needle=“something3”;
const selection=document.querySelectorAll('section.facet.clearfix');
设i=-1;
让targetIndex;
而(++i-1){
targetIndex=i;
}
}
const getNum=函数(节点,内部元素){
const target=node.querySelector(innerElement);
如果(!目标){
控制台。警告(“内部选择器不匹配”);
返回0;
}
让干草堆=“”
如果(target.childNodes.length>0){
haystack=target.childNodes[0].textContent;
}
否则{
haystack=target.innerHTML;
}
//console.info(“haystack”,haystack);
常量numerimatches=(haystack.match(/\d{1,}/g);
const result=+numerimatches[numerimatches.length-1];
控制台信息(“结果”,结果);
返回结果;
};
const ul=选择[targetIndex]。查询选择器(“ul”);
const lis=[…ul.queryselectoral(“li”)].sort(函数(a,b){
返回getNum(b,“a”)-getNum(a,“a”);
});
i=-1;//我们已经在上面声明了这一点
而(++i

当排序
204、203、200-201
时,是
200-201
的第一个(
200
)还是最后一个(
201
)数字决定了它在结果列表中的位置?我想说的是最后一个数字!欢迎来到堆栈溢出。请参阅。并发布您迄今为止尝试过的内容。您是否从数据源生成
li
文本?或者你收到了HTML,首先?我编辑了一点问题,试图给你更多的数据,也许我太含糊了,这几乎是完美的!还有一个小虫子。我在标签里看到的是一个带有数字的标签,似乎在排序时也需要这个数字。是否有一种方法可以使用仅在标记内部的条件进行排序?我用标签更新了问题,所以它可能很清楚,我不明白。请在你的答案中写下HTML,复制我在这里发布的内容,并添加缺少的内容。所以我可以调整代码。我看到在你的代码笔中,它正按照我的愿望工作!在我的工作中,它仍然有一些优势,当选择在1)200和2)200-201之间时,它仍然排序在这个位置:1)200 2)200-201。我会尽力理解为什么这取决于内容。我制作的正则表达式提取源字符串中的最后一个字符序列。您的
  • 中可能有多个子节点。我会做一个调整,删除任何其他我会尽可能多地理解的东西,因为我了解了更多关于这一点,非常感谢!你帮了我很多!
    1) abc-def 200-201
    2) fgh 204
    3) hjk-lef 203
    
    1) fgh 204
    2) hjk-lef 203
    3) abc-def 200-201