js中如何用符号对列表进行排序

2024-03-09

我有一个包含选项列表的下拉菜单,如下所示:

<select id="weightClass" class="form-control input-sm">
     <option value="Default">Please Select</option>
     <option>200</option>
     <option>&lt;200</option>
     <option>&gt;200</option>
     <option>Unknown</option>
</select>

我正在尝试按自定义顺序对它们进行排序,因此它看起来像这样:

<select id="weightClass" class="form-control input-sm">
     <option value="Default">Please Select</option>
     <option> <200 </option>
     <option> 200 </option>
     <option> >200 </option>
     <option>Unknown</option>
</select>

基本上是这样安排的,首先是小于选项,然后是标准选项,然后是大于选项,然后是未知选项。

这是动态生成的,值可以是任何值,但始终有 4,并且始终采用该格式。始终包含未知、>、

我当前的代码是:

function sortDropDown(target) {
    $(target).html($(target + " option").sort(function (a, b) {
        return a.text === b.text ? 0 : a.text < b.text ? -1 : 1;
    }));
}

这显然不起作用,我如何解决这个问题的任何想法,似​​乎都找不到有关使用 >


提取文本(排除第一个),使用排序数组对文本进行排序和交换

使用 HTML

<select id="weightClass" class="form-control input-sm">
    <option value="Default">Please Select</option>
    <option>&lt;200</option>
    <option>&gt;200</option>
    <option>200</option>
    <option>Unknown</option>
</select>

你可以使用这个脚本(after上面的 HTML)

var sortOrder = {
    '<': 1,
    // placeholder for the value
    '>': 3,
    'U': 4
}

function sortDropDown(target) {
    // get text
    var opts = [];
    $(target + " option").each(function (i) {
        if (i)
            opts.push($(this).text())
    });

    opts.sort(function (a, b) {
        // get the sort order using the first character
        var oa = sortOrder[a[0]] || 2;
        var ob = sortOrder[b[0]] || 2;
        if (oa > ob)
            return 1;
        else if (oa < ob)
            return -1;
        else
            return 0;
    });

    // change the option text
    $(target + " option").each(function (i) {
        if (i)
            $(this).text(opts[i - 1])
    });
}

sortDropDown("#weightClass")
var sortOrder = {
  '<': 1,
  '>': 3,
  'U': 4
}
function sortDropDown(target) {
  var opts = [];
  $(target + " option").each(function (i) {
    if (i)
      opts.push($(this).text())
      });
  console.log(opts)
  opts.sort(function (a, b) {
    var oa = sortOrder[a[0]] || 2;
    var ob = sortOrder[b[0]] || 2;
    if (oa > ob)
      return 1;
    else if (oa < ob)
      return -1;
    else
      return 0;
  });
  $(target + " option").each(function (i) {
    if (i)
      $(this).text(opts[i - 1])
      });
}

sortDropDown("#weightClass")
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="weightClass" class="form-control input-sm">
    <option value="Default">Please Select</option>
    <option>&lt;200</option>
    <option>&gt;200</option>
    <option>200</option>
    <option>Unknown</option>
</select>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js中如何用符号对列表进行排序 的相关文章

随机推荐

  • 来自 FileObserver 的 Toast

    我有个问题 我正在使用一个FileObserver 它将新文件从监视的目录移动到另一个以前指定的目录 在我看来 只要观察者观察目录 即使应用程序仅在后台运行 也应该显示一条 toast 消息 指出 文件 xy 已被移动 但我没有让它发挥作用
  • “Java 修改的 UTF-8 编码”是什么意思?

    Java 修改的 UTF 8 编码 是什么意思 它与普通的 UTF 8 编码有何不同 javadoc 中有详细描述DataInput http download oracle com javase 6 docs api java io Da
  • DeleteFile() 或 CopyFile() 会抛出异常吗?

    我用DeleteFile and CopyFile方法 这些函数是否抛出异常或只是设置errno and lastError 我需要用以下内容包围这段代码吗try and catch 如果您指的是 Win32 API 函数 答案是否定的 W
  • chrono stable_clock 没有给出正确的结果?

    我的应用程序服务器代码中有一行代码 它使用以下命令获取时间戳值steady clock如下所示 uint64 t now duration cast
  • 如何创建具有特定 inode 编号的文件?

    如何在 ext3 文件系统中创建文件 具有特定的索引节点号 例如 我想创建一个 inode number 12253 的文件 我认为从用户空间创建文件时没有任何编程方式来请求特定的索引节点号 除了可见于stat 结果 inode 编号在用户
  • 如何在不使用递归的情况下遍历二叉搜索树?

    我可以使用递归轻松遍历二叉搜索树 但我不知道如何在没有递归的情况下遍历二叉搜索树 所以请任何人解释一下 是的 你可以用堆栈来做到这一点 你必须在这里采用 stack 算法 以二叉搜索树的迭代方式 非递归方式 方法 进行预重排序 中序和后序遍
  • 将新视图推送到 UINavigationViewController 时强制纵向方向

    我有一个 TabBar 基础应用程序 它仅支持一种特殊视图 UINaviagtionController 的根视图 的横向方向 现在我想强制此导航控制器的所有其他视图为纵向 我尝试过使用 UIDevice currentDevice set
  • 如何让div全屏显示?

    我在用Flot http people iola dk olau flot examples 绘制我的一些数据的图表 我想在单击按钮时使该图表显示全屏 占据显示器上的整个空间 会很棒 目前 我的div如下 div style width 1
  • 如何使用 PHPSpreadsheet 在 Excel 上添加新行

    您好 我是这个名为 PHPSpreadsheet 的库的新手 我尝试阅读它的文档 但我无法理解它 我想在existingExcel 文件和 这是我到目前为止所拥有的
  • 在 SQL 查询中连接 4 个表

    我的数据库中有 4 个关系表 想要加入它们以获得总价值 例如 我有朋友 家人 关注者和熟人 想要加入这些以获得 全部 值 表格格式如下 Friends id follower following 1 2 3 2 4 5 Family id
  • Windows 7 任务计划程序和 Python - 壁纸不变

    我尝试每五分钟运行一次 Python 脚本来更新 Windows 7 桌面背景 从命令行启动时它可以完美运行 但不能作为计划任务运行 相关代码 import ctypes According to MSDN other websites S
  • Flutter可以以kiosk模式制作应用程序吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Flutter可以以kiosk模式制作应用程序吗 如果是的话我该怎么做 有任何文档或教程可以帮助我吗
  • 寻找支持 ANSI 转义码的 UserControl

    我正在寻找处理具有 ANSI 转义码的传入 telnet 文本 对于赏金 我正在寻找一个完整的实现 我可以将文本附加到缓冲区的末尾 控件应该是可滚动的 但在用户滚动到视图之外时仍然能够处理附加文本 光标定位等 例如 e 0 32mHello
  • Android 中日期格式的转换方法

    我正在将日期放入字符串中YYYY MM DD HH MM SS格式 我想将其更改为mm dd yyyy HH mm ss它还会向上午和下午显示我该怎么做 请帮助我 谢谢 要获取 AM PM 和 12 小时日期格式 请使用hh mm ss a
  • 如何使用Dialogflow CX API将参数传递给webhook?似乎 detectorIntent() 设置会话 queryParams 不起作用

    根据谷歌dialogflow cx文档 https cloud google com dialogflow cx docs concept parameter https cloud google com dialogflow cx doc
  • 从 SQL Server CE 获取 @@Identity 时出现“解析查询时出错”

    我正在编写一个简单的桌面应用程序 其中使用本地 SQL 数据库 SQL Server CE 这是有问题的部分 SqlCeConnection conn new SqlCeConnection Data Source DataDirector
  • 传递 example.com 时 parse_url() 返回错误

    根据以下代码如果 host name是这样的example comPHP 返回一个通知 Message Undefined index host但在完整的网址上 例如http example comPHP 返回example com 我尝试
  • AndroidManifest.xml 中未声明活动“MainActivity”

    我收到一个错误 内容如下AndroidManifest xml 中未声明活动 MainActivity 这里有什么问题 我在移动大量文件时遇到此错误 只需重新同步您的 gradle 文件即可修复 文件 gt 将项目与 Gradle 文件同步
  • ASP.NET MVC 路由

    到目前为止 我已经能够避免使用 ASP NET MVC 附带的默认路由 不幸的是 现在我正在扩展到更复杂的路线 我正在努力思考如何让它发挥作用 我试图获取的一个简单示例是将路径 User UserID Items 映射到用户控制器的 Ite
  • js中如何用符号对列表进行排序

    我有一个包含选项列表的下拉菜单 如下所示