Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.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 按部分文本对HTML选择排序_Javascript_Sorting_Select_Text_Partial - Fatal编程技术网

Javascript 按部分文本对HTML选择排序

Javascript 按部分文本对HTML选择排序,javascript,sorting,select,text,partial,Javascript,Sorting,Select,Text,Partial,我需要根据文本中的连字符按文本的部分对项目进行排序。 例如: <select id="mySelect"> <option value="1">Oranges - Box A - Deliver</option> <option value="2">Apples - Box A - Deliver</option> <option value="3">Bananas - Box B - Deliver

我需要根据文本中的连字符按文本的部分对项目进行排序。 例如:

<select id="mySelect">
    <option value="1">Oranges - Box A - Deliver</option>
    <option value="2">Apples - Box A - Deliver</option>
    <option value="3">Bananas - Box B - Deliver</option>
</select>
我相信有一些巧妙的方法可以找到连字符和子字符串,但我还没能想出一些有效的方法


以前有人做过这样疯狂的事吗?我感谢你的意见。谢谢

子零件上的重复排序应起作用:

$r.sort(function (a, b) {
    return (a.text.split(" - ")[1]).localeCompare(b.text.split(" - ")[1]);
});

$r.sort(function (a, b) {
    return (a.text.split(" - ")[0]).localeCompare(b.text.split(" - ")[0]);
});
您可以使用以下回调函数:

这是基于这样的证据:如果你按字母顺序排列一个列表,同一个单词在不同的位置出现了好几次,那么只有第一个单词会起作用

因此:

将以与以下相同的方式进行排序:

Box A - Oranges - Deliver
Box A - Apples - Deliver
Box B - Bananas - Deliver

我再次重复这个概念,如果同一个词出现在几个位置上,那么只有第一个词很重要。

太棒了!这很好用!我完全忘记了split()!非常感谢。这也行!但是,我宁愿只做一种,而不是两种。我相信,如上克里斯蒂安特拉纳所示的一种方式会更有效率。谢谢你回复你的想法!
$r.sort(function (a, b) {
    return (a.text.split(" - ")[1]).localeCompare(b.text.split(" - ")[1]);
});

$r.sort(function (a, b) {
    return (a.text.split(" - ")[0]).localeCompare(b.text.split(" - ")[0]);
});
function (a, b) {
   return (a.text.split('-')[1]+a.text).localeCompare(b.text.split('-')[1]+b.text);
}
Box A - Oranges - Box A - Deliver
Box A - Apples - Box A - Deliver
Box B - Bananas - Box B - Deliver
Box A - Oranges - Deliver
Box A - Apples - Deliver
Box B - Bananas - Deliver