按字母顺序排序下拉列表,然后按特定前缀排序

kid_spot

我需要按字母顺序对下拉列表进行排序,然后按前缀排序。

我要排序的前缀是“ b:”,所以任何以“ b:”开头的内容都应在底部。

<select id="dropdown">
  <option value="1">a</option>
  <option value="2">b</option>
  <option value="3">c</option>
  <option value="4">b: option 1</option>
  <option value="5">b: option 2</option>  
  <option value="6">c</option>
</select>

这是理想的最终结果:

<select id="dropdown">
  <option value="1">a</option>
  <option value="2">b</option>
  <option value="3">c</option>
  <option value="6">c</option>
  <option value="4">b: option 1</option>
  <option value="5">b: option 2</option>  
</select>

我使用以下JavaScript代码进行字母排序:

  $("#dropdown option").sort(function(a,b) { 
    var at = $(a).text();
    var bt = $(b).text();         
    return (at > bt)?1:((at < bt)?-1:0);        
  }).appendTo("#dropdown");

输出:

<select id="dropdown">
    <option value="1">a</option>
    <option value="2">b</option>
    <option value="4">b: option 1</option>
    <option value="5">b: option 2</option>
    <option value="3">c</option>
    <option value="6">c</option>
</select>

但是我仍然需要将“ b:”元素推到下拉列表的底部。我该如何实现?

这是jsfiddle链接

妮娜·斯科茨(Nina Scholz)

您可以添加另一个带有String#includes前缀的支票,并获取支票的差额。

at.startsWith(prefix) - bt.startsWith(prefix)

var prefix = 'b:'
$("#dropdown option").sort(function(a, b) {
  var at = $(a).text();
  var bt = $(b).text();
  return at.startsWith(prefix) - bt.startsWith(prefix) || at > bt || -(at < bt);
}).appendTo("#dropdown");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="dropdown">
  <option value="1">a</option>
  <option value="2">b</option>
  <option value="3">c</option>
  <option value="4">b: option 1</option>
  <option value="5">b: option 2</option>  
  <option value="6">c</option>
</select>

对于较旧的用户代理,您可以使用 String#indexOf

var prefix = 'b:'
$("#dropdown option").sort(function(a, b) {
  var at = $(a).text();
  var bt = $(b).text();
  return !at.indexOf(prefix) - !bt.indexOf(prefix) || at > bt || -(at < bt);
}).appendTo("#dropdown");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="dropdown">
  <option value="1">a</option>
  <option value="2">b</option>
  <option value="3">c</option>
  <option value="4">b: option 1</option>
  <option value="5">b: option 2</option>  
  <option value="6">c</option>
</select>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

按值对Hashmap排序,然后按字母顺序排序

按数据属性(按字母顺序,然后按数字顺序)对列表项进行排序

按枚举排序列表,然后按字母顺序排序

C-按计数排序,然后按字母顺序

首先按字母顺序对列表进行排序,然后按数字对列表进行排序?

如何按长度排序列表,然后按字母顺序反向

下拉列表按字母顺序排序

如何按字母顺序对 csv 数据进行排序,然后按列按数字排序?

Java 8 Streams,将元素放在列表的顶部,然后按名称的字母顺序排序

Java 排序列表,流首先按长度,然后按字母顺序

如何使用sort_by按字母顺序然后按数字顺序然后按特殊字符排序

熊猫value_counts:按值排序,然后按字母顺序排序?

按子数组类型值排序,然后按字母顺序排序

MySQL-如何按名称排序,然后按字母数字顺序在表上排序?

MySQL-按多个单词排序,然后按字母顺序排序?

MongoDB:按现有字段排序,然后按字母顺序排序

PHP高级按数字先排序,然后按字母顺序排序

按长度排序数组,然后按字母顺序排序

按字段对对象数组进行排序,然后按字母顺序排序

Python按降序排序字典,然后按字母顺序排序

按字母顺序对字符数组进行排序,然后按长度排序

SQL如何用数字按字母顺序排序文本,然后按数字排序

按索引对大熊猫数据框进行排序,然后按字母顺序排序

给定哈希数组,按字母顺序排序,然后按数字排序

按字母顺序,按未由APPLE开头的字母排序,然后按以APPLE开头的字母排序

Postgres / ActiveRecord按字母排序,然后按数字排序?

Linq按属性排序,然后按原始顺序排序

通过动态提供的对象属性列表按顺序排序对象,然后按样式排序

按自定义字段排序对象数组,然后按字母顺序