versionCompare js版

小程序笔记(六)基础库版本兼容控制处理(新版获取手机号为例) 1、搬一下微信文档的版本号比较法,搬到util.js里面。 兼容 | 微信开放文档 //#region 版本兼容判断 const compareVersion = (v1, v2) => { v1 = v1.split('.') v2 = v2.split('.') const len = Math.max(v1.length, v2.length) while (v1.length < len) { v1.push('0') } while (v2.le 阅读详情

在网上看见的一道面试题,觉得挺有意思,用中午午饭时间写了一下:

版本比较方法versionCompare(js版本):

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script>
		// 接收的两个版本号为字符串格式
		function versionCompare(v1, v2) {
			// 递归去掉末尾的所有'0'
			function trim(arr) {
				if(arr[arr.length - 1] == 0) {
					arr.pop();
					trim(arr);
				}else{
					return arr;
				}
			}
			var arrStr1 = v1.split('.');
			var arrStr2 = v2.split('.');
			// 转换成数字数组
			var arr1 = arrStr1.map(function(data) {
				return +data;
			});
			var arr2 = arrStr2.map(function(data) {
				return +data;
			})
			// 去调末尾的0
			trim(arr1);
			trim(arr2);
			
			if(arr1.length === arr2.length) {	// 两个版本号一样长
				for(var i = 0; i < arr1.length; i++) {
					if(arr1[i] > arr2[i]) {
						return '前者大';
					}else if(arr1[i] < arr2[i]) {
						return '后者大';
					}else if(i == (arr1.length - 1)) {	// 比到最后没分出大小则一样大
						return '一样大';
					}
				}
			}else if(arr1.length > arr2.length) {	// 前者长度更长
				for(var i = 0; i < arr2.length; i++) {
					if(arr1[i] > arr2[i]) {
						return '前者大';
					}else if(arr1[i] < arr2[i]) {
						return '后者大';
					}else if(i == (arr1.length - 1)) {	// 比到最后没分出大小则前者大(因为前者长度更长)
						return '前者大';
					}
				}
			}else{	// 后者长度更长
				for(var i = 0; i < arr1.length; i++) {
					if(arr1[i] > arr2[i]) {
						return '前者大';
					}else if(arr1[i] < arr2[i]) {
						return '后者大';
					}else if(i == (arr1.length - 1)) {	// 比到最后没分出大小则后者大(因为后者长度更长)
						return '后者大';
					}
				}
			}
		}
		// 测试用例
		var v1 = '1';
		var v2 = '1.0';
		var v3 = '1.0.0.0';
		var v4 = '1.0.0.1';
		var v5 = '0.1';
		var v6 = '2.0';
		var v7 = '0.1.0.1';
		var v8 = '0.1.8.1';
		var v9 = '0.1.12.0';
		var v10 = '01.0.1.0'
		alert(versionCompare(v3, v10));
	</script>
</head>
<body>
	
</body>
</html>


js-compare:JavaScript的比较功能 :balance_scale: JavaScript的比较功能。 参见 。 import { reverse , lexicographical , increasing } from '@aureooms/js-compare' ; let compare = reverse ( lexicographical ( increasing ) ) ; compare ( [ 1 , 1 ] , [ 1 , 2 ] ) > 0 ; // true :scroll: 参考 立即下载

相关推荐

version-compare.js:软件版本控制的数字版本比较

版本比较 Semver 版本比较器,灵感来自 ,但它似乎不再维护(并且已从 github 中消失)。 安装 $ npm install --save version-compare.js 用法 var compareVersion = require ( 'version-compare' ) ; compareVersion ( '1.11.0' , '1.11.0' ) ; // => 0 compareVersion ( '1.11.0' , '1.2.9' ) ; // => 1 compareVersion ( '1.11.3' , '1.11.25' ) ; // => -1 测试 $ npm test 执照 MIT 执照,保持冷静,为所欲为。

js 版本号比较函数

js版本比较 适用版本号格式:纯数字,用 . 分隔,版本号分隔位数可不相等。 例:1.0.1与1.0.1.002比较。 思路:将版本号按 . 分隔成数组,再转换成数字,循环进行比较。 // 版本比较 function version_compare(v1, v2) { //将两个版本号拆成数组 var arr1 = v1.split('.'), arr2 = v2.split('.'); var minLength=Math.min(arr1.length,arr2.

我有一个魔盒的博客 3429

两种方法解决这个问题OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.

两种方法解决这个问题OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.在进行深度学习比如在训练yolov8模型时,在加载训练集和验证集时会报以下那个错误时会导致模型训练中断,有以下两个方法去解决这个问题,来使模型正常训练。

weixin_73044854的博客 2万+

js.比较版本号

version1 的第二个修订号为 "2",version2 的第二个修订号为 "10":2 < 10,所以 version1 < version2。依次比较它们的修订号。如果其中一个版本字符串的修订号较少,则将缺失的修订号视为。version1 有更少的修订号,每个缺失的修订号按 "0" 处理。忽略前导零,"01" 和 "001" 都代表相同的整数 "1"。// 如果arr2[i]中没有数据,b为NaN。//arr1数组数据更多,有剩余。//arr2数组数据更多,有剩余。//如果相等,继续判断。

露西西⭐的博客 1176

单片机控制双向可控硅的5种实用触发电路设计(附完整电路图)

本文深入解析了单片机控制双向可控硅的5种实用触发电路设计,涵盖从基础隔离到复杂负载驱动的实战方案。重点探讨了光电耦合器选型、过零检测同步、RC吸收电路精密计算以及应对感性负载和高噪声环境的加固策略,并提供了完整的电路图与调试避坑指南,旨在帮助开发者实现安全可靠的交流负载控制。

joy55的博客 2219

Ubuntu 22.04源码编译安装ROS Noetic

Ubuntu 22.04源码编译安装ROS Noetic

Drknown的博客 2万+

版本号比较JS

版本号比较js

weixin_43814775的博客 579

恶意代码实验3:Word宏病毒实验

只要下次打开这个word文档,就会执行以上代码,并将自身复制到Normal.dot(word文档的公共模板)和当前文档的ThisDocument中,同时改变函数名(模板中为Document_Close,当前文档为Document_Open),此时所有的word文档打开和关闭时,都将运行以上的病毒代码,可以加入适当的恶意代码,影响word的正常使用,本例中只是简单的跳出一个提示框。回答不正确三次,即可自动跳出病毒程序,但那时已经出现几十个文档。1、打开的宏编辑器如图所示,即可编写病毒代码。

qq_63949327的博客 6506

js中版本号的比较

1. 背景 在开发过程中,我们常常需要比较两个版本号的大小,来做一些特殊处理,今天我们就来实现此功能。 假设版本号为非空字符串,并且只包含数字和 . 字符。这种情形下比较两个版本号 version1 和 version2,如果 version1 > version2 返回 1,如果 version1 < version2 返回 -1, 除此之外返回 0。 2. 思路 将版本号字符串拆分...

wanglele16的博客 3535

Node-RED系列(二二):使用dashboard搭配echarts制作漂亮的面板

在node-red中dashboard 是一个很常用的模块,其中它有一个chart节点可以用来制作一些图表,比如柱状图,折线图,饼图,但其中的图表并不是很美观,而且可配置项非常的少。 于是就有很多小伙伴找我做一套比较好看的图表面板,在对比了一下几个图表库,我选中了echarts。 不仅美观大方,而且非常容易集成,配置。下面先来看一下我做的效果。这里是直接做了四个折线图,第一个折线图有动态效果,第二个折线图是一个多线条的折线图,第三个折线图是在一个图例显示两个折线图。第二第三都可以用于数据对比。 第四个折线

知无涯 1万+

车载诊断架构 --- 车载ECU开发中DTC数量与芯片存储能力的关系及应对策略

本文探讨了汽车电子系统中ECU存储DTC故障码的容量问题及解决方案。作者作为汽车电子工程师,针对台架测试中遇到的DTC存储超限案例展开分析,指出随着汽车智能化发展,ECU需处理的DTC数量激增与芯片存储能力有限的矛盾。文章详细介绍了DTC的存储需求、ECU支持数量与芯片容量的关系,并提出应对策略,通过实际案例验证了方案的可行性。最后强调在ECU开发中需合理分配存储资源,确保关键故障信息不丢失。

Soly_kun的博客 87

js比较版本号

【代码】js比较版本号。

weixin_45832746的博客 493

EMS案例:BMS传导发射超标整改案例

BMS作为新能源汽车的关键部件,其EMC性能直接影响整车的安全性和可靠性。本文通过一个实际的传导发射整改案例,详细展示了从问题定位、分析到解决方案实施的全过程。希望这些经验能够为从事类似产品设计的工程师提供有价值的参考,在未来的产品开发中避免类似问题,设计出更加可靠、稳定的BMS产品。EMC设计是一门结合理论与实践的艺术,只有通过不断积累经验、深入理解电磁场理论,并紧密结合实际应用场景,才能在复杂的电磁环境中设计出鲁棒性强的电子产品。

m0_56451176的博客 272

2020/3/3 晚上笔试题(前端)

晚上的笔试题只有 Node 版本的 JavaScript。。。。好在是写函数,而不是要读取用户输入~ 一 实现一个函数 versionCompare(a, b) ,比较两个版本号字符串的大小。 如果a版本大于b,返回-1 a版本等于b,返回0 a版本小于b,返回1 用例: 输入: a = ‘3.0.14’, b = ‘2.0.11’ 输出: -1 输入: a = ‘3’ , b = ‘3.0....

romeo12334的博客 590

YOLO11创新改进系列:卷积,主干 注意力,C3k2融合,检测头等创新机制(已更新110+)

本专栏提供详细的 YOLO11 教程,包括基础知识、源码解析、入门实践、算法改进和项目实战,适合发表YOLO11 学习者订阅。内容包含 100+多篇独家改进机制,适合发表论文,评分高达 96 分。订阅者将获得一键运行的改进文件及答疑交流群支持。 使用服务器的同学还可以私聊获取搭建好的运行环境。

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Cordova打包apk

Cordova 是一个开源的移动开发框架,允许开发者使用 HTML、CSS 和 JavaScript 等 Web 技术来构建移动应用。Cordova 将 Web 应用封装在一个本地容器中,从而能够访问设备的原生功能,如摄像头、GPS、通讯录等。这使得 Web 应用能够获得与原生应用相似的体验。

moresi的博客 3172

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

cordova build android报错,cordova build android 失败

cordova build android 失败,已解决。命令:cordova build android;cordova 编译失败,错误信息如下:FAILURE: Build failed with an exception.* What went wrong:A problem occurred configuring project ':CordovaLib'.> Could not ...

weixin_39981632的博客 1503

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

版本号算法题

【代码】版本号算法题。

weixin_43850639的博客 138

版本号比较

【代码】版本号比较。

HTE_YOUNG_MAN的博客 531

JS版本号比较大小

在项目开发和运行的过程中,总是少不了各类升级。例如某个功能组件需要更高的依赖库、数据项需要进行兼容等等问题。遇到此类问题开发者需要使用版本号来解决。版本号通常由三部分组成:主版本号、次版本号和修订版本号。当你做了向下兼容的功能性新增时,就需要升级次版本号;当你做了向下兼容的问题修正时,就需要升级修订版本号。通常来说升级会涉及到三个点:向下兼容、协商升级、拒绝服务。

关注最新技术问题并持续维护更新 1215

JS中版本号的比较(AI)

在 JavaScript 中,您可以使用字符串比较算法比较版本号。版本号通常采用 x.y.z 格式,其中 x、y 和 z 均为数字,表示主版本号、次版本号和修订版本号。以下是比较版本号的一些示例代码。

轰轰烈烈的生活 4866

js判断两个版本号的大小

function compareVersion(v1, v2) { if (v1 == v2) { return 0; } const vs1 = v1.split(".").map(a => parseInt(a)); const vs2 = v2.split(".").map(a => parseInt(a)); const length = Math.min(vs1.length, vs2.length); for (let i = 0; i <

liushijun_的博客 4443

JavaScript万能比较函数

万能比较函数,用于比较数组中的对象指定属性的升序或者降序,数组中存放的是对象。使用时,先指定要比较的是什么,然后指定升序或者降序。 function compare(attr,rules){ return function(o1,o2){ if(rules==='asc'){ if(o1[attr]<o2[attr]){ return -1; }else{ ...

King的博客 1474

js比较2个版本号大小

请注意,上述代码只能比较符合简单版本号格式的字符串。如果需要比较更复杂的版本号,例如包含预发布版本、修订号等信息,你可能需要修改代码来处理这些情况。比较过程按从左到右的顺序进行,如果当前段的数字不同,则可以直接返回比较结果。如果到达数组末尾,仍然没有返回比较结果,则说明两个版本号完全相同。)来比较两个版本号的大小。然而,由于版本号的格式复杂多样,比较它们的大小可能需要进行更多的处理。在 JavaScript 中,可以使用比较运算符(例如。函数接受两个版本号字符串参数。,然后逐段比较两个数组中的数字。

zy0412326的专栏 2575

js比较两个版本号的大小(比较简洁)

网上找了很多比较版本号大小的办法都不怎么好用,或者代码臃肿。 无意间自己写了一个觉得还可以。。推荐 由于版本号是两个小数点不能直接比较,直接比较会出错(偶尔不对)。 所以就把前两位 转为浮点数比较,在相等的情况下比较后面一位。 代码如下: var versionfunegt = function (ver1,ver2) { var version1pr

liujun99的专栏 1万+
上一篇: img在div内水平垂直居中
下一篇: 跨域的四种解决方案
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值