如何使用 JavaScript 比较软件版本号? (仅限数字)

2024-04-07

这是软件版本号:

"1.0", "1.0.1", "2.0", "2.0.0.1", "2.0.1"

我如何比较这个?

假设正确的顺序是:

"1.0", "1.0.1", "2.0", "2.0.0.1", "2.0.1"

这个想法很简单......: 读第一个数字,然后读第二个,然后读第三个…… 但我无法将版本号转换为浮点数...... 您还可以看到版本号,如下所示:

"1.0.0.0", "1.0.1.0", "2.0.0.0", "2.0.0.1", "2.0.1.0"

这更清楚地看出背后的想法是什么...... 但是,如何将其转换为计算机程序呢?


semver https://www.npmjs.com/package/semver

The 语义版本 https://semver.org/npm 使用的解析器。

$ npm install semver
var semver = require('semver');

semver.diff('3.4.5', '4.3.7') //'major'
semver.diff('3.4.5', '3.3.7') //'minor'
semver.gte('3.4.8', '3.4.7') //true
semver.ltr('3.4.8', '3.4.7') //false

semver.valid('1.2.3') // '1.2.3'
semver.valid('a.b.c') // null
semver.clean(' =v1.2.3 ') // '1.2.3'
semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
semver.gt('1.2.3', '9.8.7') // false
semver.lt('1.2.3', '9.8.7') // true

var versions = [ '1.2.3', '3.4.5', '1.0.2' ]
var max = versions.sort(semver.rcompare)[0]
var min = versions.sort(semver.compare)[0]
var max = semver.maxSatisfying(versions, '*')

语义版本控制链接 :
https://www.npmjs.com/package/semver#prerelease-identifiers https://www.npmjs.com/package/semver#prerelease-identifiers

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 JavaScript 比较软件版本号? (仅限数字) 的相关文章

  • 归并排序中递归树的高度log(n)+1是怎么来的

    我按照 stackoveflow 的建议阅读了一些问题和答案 我正在遵循 cormen 的 算法简介 一书进行自学 那本书里已经解释得很清楚了 但唯一没有解释的是如何在合并排序分析中计算树的高度 如果在后面的章节中对此进行解释的话 我仍然在
  • Javascript DOM setAttribute 在函数调用中不起作用

    我有一个带有输入元素的 HTML 文件 我希望向其中添加一个名为 valid fieldset011 的新属性 该属性用作 AngularJS 验证器的链接 输入元素具有属性 id fieldset011 如果我使用以下脚本 包含在脚本标签
  • ajaxStop() 不触发

    这是不起作用的代码 document ajaxStop function this unbind ajaxStop prevent running again when other calls finish Display everythi
  • 仅单击 div 内部

    我正在为一个小网站制作教程 我只想让教程气泡可点击 因此 当我们尝试单击气泡之外的某些内容时 什么也不会发生 换句话说 我希望我的 html 不可点击 而 tutorial bubble 可点击 尝试这个 jQuery function h
  • Javascript - 在加载所有图像后执行

    看了别人的问题我想 window onload 会回答我的问题 我已经尝试过这个 但它会在页面加载时立即执行代码 而不是在图像加载之后 如果有什么区别的话 图像来自 CDN 并且不是相对的 有人知道解决办法吗 我没有使用 jQuery 想要
  • 了解 sort() 比较函数

    我正在使用一个电子商务平台 该平台无法重新排序产品属性字段的选项 这真的很糟糕 因为要插入新选项 您几乎必须删除所有现有选项并重新开始 我正在尝试在客户端进行操作 这是我正在处理的内容 这是针对鞋码的 9 EE 9 1 2 EE 10 EE
  • 如何导入和导出 javascript ES6 类

    我是 javascript 和 nodejs 的新手 我正在使用这个项目来发展我的技能并学习新技术 目前我的项目使用多个相互依赖的类 类文件位于不同的目录中 我当前正在尝试使用 export 和 require 语句来允许在其他文件中引用类
  • Chrome 扩展同步调用 - 仅在窗口关闭后创建窗口

    我有这个代码 function voteNewWindow mailNum chrome windows create url http www google com incognito true function window conso
  • 如何以编程方式退出或关闭 Javascript UWP 应用程序? (Windows 10)

    我制作了一个游戏 它需要自己的退出按钮 我无法使用CoreApplication Exit https msdn microsoft com en us library windows apps windows applicationmod
  • 将文本大小调整为矩形 在 Canvas HTML5 中调整大小

    我是 Canvas 新手 我正在创建一个网站 以在调整矩形大小时增加文本 我尝试了很多 但没有任何效果 实际上 我希望如果我仅按其宽度调整矩形大小 向左拉伸 向右拉伸 则仅应增加文本宽度而不是字体大小 我已经完成了字体大小 但发现增加孤立文
  • 如何用javascript正确读取php cookies

    考虑这个 php 和 javascript 代码 然后我在控制台中看到的是 utma 111872281 291759993 1444771465 1445374822 1445436904 4 utmz 111872281 1444771
  • 判断一个数字是否能被 3 或 5 整除 (FizzBu​​zz)

    如何根据输出是否能被 3 或 5 整除来更改输出 如果它能被 3 整除 我想显示 rock 如果它能被 5 整除 我想显示 star 类似于 FizzBu zz 如果两者都有 他们都会看到 这是我的代码 if var n Math floo
  • 如何从 JSON 响应重定向?

    所以我尝试使用 Flask 和 Javascript 上传器 Dropzone 上传文件并在上传完成后重定向 文件上传正常 但在烧瓶中使用传统的重定向 return redirect http somesite com 不执行任何操作 页面
  • ToggleClass 动画 jQuery?

    我的网站上有一个部分 当用户单击时我希望它展开 我正在使用 jQuerytoggleClass为了这 expandable function e e preventDefault this closest article toggleCla
  • 如何打开弹出窗口并用父窗口中的数据填充它?

    如何使用 JavaScript jQuery 使用父页面中 JS 变量的数据填充弹出窗口 在我的示例中 我有一个文件名数组 我在父窗口中最多列出五个 如果还有更多 我想提供一个链接来打开弹出窗口并列出数组中的每个帖子 因此 如果我打开一个包
  • Knockout.js 安全绑定

    我想使用带有淘汰赛的安全绑定 为此我使用敲除安全绑定 js https github com brianmhunt knockout secure binding 谁能解释一下为什么下面的代码不起作用 它会抛出一个错误 未捕获 淘汰 安全
  • Firebase 警告:使用 Firebase Cloud Function 搜索数据时使用未指定的索引

    我构建了一个 Firebase 云函数 用于查找 IsNotificationEnabled 值等于 true 的用户 我的部分职能 export const sendPushNotification functions https onR
  • MongoDB中如何通过引用字段进行查询?

    我有两个 Mongo 模式 User id ObjectId name String country ObjectId Reference to schema Country Country id ObjectId name String
  • 在 HTML5 iOS 7 / iOS 8 中显示十进制键盘

    经过几个小时的搜索后 我只是有一个简单的问题 是否有可能在网络浏览器输入字段中显示小数键盘 input type number 只显示数字 但我需要在左下角使用逗号或点 我尝试过任何事情 pattern step等等 但没有显示十进制键盘
  • Flowtype 属性“msg”缺失为 null 或未定义

    我发现 Flow 很难用 我明白那个Array find可以返回或未定义 因此 通过阅读以下内容 github Array find on Array 引发 https github com facebook flow issues 351

随机推荐

  • Nginx WordPress

    我目前正在尝试让我的 Nginx Mysql Wordpress 在 Fedora 18 x64 上工作 做了以下手册http www howtoing com install wordpress using lamp or lemp on
  • 对城市的区域名称进行地理编码以获取纬度和经度

    我有我所在城市的区域名称列表 我需要相同的纬度和经度 我可以使用任何服务来获取数据吗 我不想使用任何地图 我想进行简单的 api 调用并通过 json 或 xml 获取经纬度 虽然问题已经得到解答 但我想补充一点 谷歌并不是唯一提供地理编码
  • 搜索 django 中表中的所有字段

    如何使用过滤子句在django中搜索表中的所有字段 ex table object filter 表中的任何字段 sumthing Thanks 我同意阿拉斯代尔的观点 但你问题的答案是这样的 from django db models i
  • react-native-google-places-autocomplete 给它一个值,而不仅仅是默认(初始)值

    我有一个工作
  • 在eclipse中播放ogg文件

    所以我试图在我的乒乓球游戏中添加声音 但由于某种原因我似乎无法播放声音 没有错误消息 这意味着路径是正确的 但声音根本不正确玩 以下是我的背景音乐代码 把pong的东西都删掉了 先谢谢了 import java applet Applet
  • Maui-blazor 渐变闪屏

    是否可以设置渐变启动画面 在例子中 https learn microsoft com en us dotnet maui user interface images splashscreen tabs android
  • Misra 2012 不允许在不同指针之间进行转换的基本原理

    我目前正在开发一个项目 该项目要求代码符合 Misra 2012 标准 在整个项目中 我们有很多必需的 Misra 警告 告诉我们无法将指向一种类型的指针转 换为指向另一种类型的指针 事情很简单void memcpy void to con
  • GET/POST 参数数量超出设置。DATA_UPLOAD_MAX_NUMBER_FIELDS

    我收到错误 GET POST 参数的数量超出了设置 DATA UPLOAD MAX NUMBER FIELDS 错误表明 TooManyFieldsSent 在 api upload 我在我的views py def upload requ
  • 如何使用 vaadin 网格导出到 csv/excel?

    在 Vaadin 14 中 我正在创建网格 并希望用户有一种稳定 简单的方法将网格内容导出到 csv 或最好是 Excel 为此 我很惊讶 Vaadin 似乎没有提供此功能 因此必须使用第 3 方开发人员插件 例如https vaadin
  • 三个点应该怎么写?

    简单的问题 我想设置一个 TextView 其中我想要三个点 省略号 喜欢 Read more 到字符串中 这三个点应该怎么写呢 在字符串文字中写入 u2026 看http www fileformat info info unicode
  • Google Maps API v3 - 为什么没有事件上下文?

    第一次使用 Google Maps API v3 我得到了一张带有一堆标记的地图 我想做到这一点 以便当您单击其中一个时 将显示一个特定的信息窗口 特定于您单击的标记 我真的很惊讶点击事件没有告诉您被点击的实际标记 我知道有一个解决方案使用
  • 使用批量/更新方法将“标签”应用于数百万个文档

    我们的 ElasticSearch 实例中有大约 55 000 000 个文档 我们有一个带有 user ids 的 CSV 文件 最大的 CSV 有 9M 个条目 我们的文档以 user id 作为键 所以这很方便 我发布这个问题是因为我
  • 基于欧几里德距离的 3D 连接点标记

    目前 我正在开发一个项目 该项目尝试通过将连通性指定为最小欧几里德距离来对数据集中的 3d 点进行分组 我现在的算法只是简单的洪水填充的 3D 改编 size t PointSegmenter growRegion size t seed
  • C# 特定进程的参数,使用 url 打开浏览器

    我正在编写一个应用程序 该应用程序应该通过单击按钮来打开某个进程 但是 用户可以添加新按钮 我使用以下代码来执行单击按钮时启动进程的操作 private void StartProcess string path ProcessStartI
  • 查找两首或多首歌曲交集的算法

    假设我们有一堆收音机 每个收音机都一遍又一遍地循环播放同一首歌 是否可以同步所有收音机中的所有歌曲 我们能找到一个时间从头听到所有歌曲吗 为了简单起见 我们会说我们只有两个收音机 我有以下公式 c 和 z 代表歌曲的长度 以秒为单位 a 和
  • Postfix + Django:SMTPException:服务器不支持 SMTP AUTH 扩展 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我对 Postfix 完全是新手 只需为 Ubuntu 设置默认的 Postfix 通过 telnet 测试它 它可以正常发送邮件 但是当我尝试通过
  • 保持 Android Studio 的特定依赖顺序

    我正在尝试在 Android Studio 中使用 Robolectric 运行单元测试 我快到了 我明白了 JUnit version 3 8 or later expected java lang RuntimeException St
  • 在使用 AWS API Gateway 和 VPC Link 时如何避免配置错误? [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我已根据 AWS 文档使用网络负载均衡器 NLB 创建了 VPC 链接 并将其附加到 API 网关资源 方法 但在访问 调用 URL
  • 带滚动条的 JavaScript 弹出窗口

    我有一个在中心弹出窗口的功能 我希望它有一个垂直滚动条 function popUpCal var url calendar flight maint php var width 700 var height 600 var left pa
  • 如何使用 JavaScript 比较软件版本号? (仅限数字)

    这是软件版本号 1 0 1 0 1 2 0 2 0 0 1 2 0 1 我如何比较这个 假设正确的顺序是 1 0 1 0 1 2 0 2 0 0 1 2 0 1 这个想法很简单 读第一个数字 然后读第二个 然后读第三个 但我无法将版本号转换