padstart方法_PADS 2.4打开PCB显示已停止工作

padstart方法_PADS 2.4打开PCB显示已停止工作之前两天搞得头皮发麻,有个需求是写个版本比较的方法,比如’10.5.4’版本是否大于’9.52.1’版本。正常的思路是使用split去截取几段,然后做递归比较。如下://版本对比constsort=(item1,item2)=>{if(item1[0]>item2[0]){returntrue}elseif(item1…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

之前两天搞得头皮发麻,有个需求是写个版本比较的方法,比如  ‘10.5.4’ 版本是否大于’9.52.1′ 版本 。正常的思路是使用split去截取几段,然后做递归比较。如下:

//版本对比
const sort = (item1, item2) => {
  if (item1[0] > item2[0]) {
    return true
  } else if (item1[0] < item2[0]) {
    return false
  } else {
    if (item1.length === 0) {
      return true
    }
    item1.shift()
    item2.shift()
    return sort(item1, item2)
  }
}

const compareVersion = (val1, val2) => {
  if (!val1) {
    return false
  }
  val1 = val1.split('.').map(item=>Number(item))
  val2 = val2.split('.').map(item=>Number(item))
  return sort(val1, val2)
}

这样显然会比较麻烦,如果使用 padStart方法转换下思路的话,就会变得很简单。

const compareVersion = (v1, v2) => {
         if (!v1) {
             return false
         }
         v1 = v1.split('.').map(item => item.padStart(3, 0))
         v2 = v2.split('.').map(item => item.padStart(3, 0))
         return Number(v1.join('')) >= Number(v2.join(''))
     }

但是再使用这个方法的过程中,却出现了天坑。

之前自己在本地的chrome环境里测试是全完没有问题的,然后在测试环境也完全没有问题,但是一发生产环境就报错了。期间各种排查原因,无法解释一套代码为何会出现不同结果。

最后使用了第一种方法解决了这个问题,稍后又查了文档

padstart方法_PADS 2.4打开PCB显示已停止工作

padStart是属于es2017的方法也就是俗称的es8,版本过高,确实可能会产生不兼容的问题。至于为什么测试环境没问题,猜测可能是测试环境与正式环境并非一样版本,比如可能babel编译版本不同造成的。

所以以后写代码的时候也不能过于追求简洁,当然在后面又将padStart方法的实现进行了下重写,也可以解决这个问题。

const compareVersion = (v1, v2) => {
	return transArray(v1) >= transArray(v2)
}
const transArray = (arr) => {
	return Number(arr.split('.').map(item => {
		let length = item.length;
		for(let i = 0; i < 3 - length; i++) {
			item = '0' + item;
		}
		return item
	}).join(''));
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195602.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • tomcat服务器宕机解决方案

    tomcat服务器宕机解决方案tomcat服务器宕机解决方案

    2022年7月23日
    11
  • pytorch – 数据读取机制中的Dataloader与Dataset

    pytorch – 数据读取机制中的Dataloader与Dataset1、人民币二分类要求:将第四套人民币中的一元和一百元进行二分类;怎么建立一个预测模型呢?考虑上一个博客中的机器学习模型训练五大步骤;第一是数据,第二是模型,第三是损失函数,第四是优化器,第五个是迭代训练过程。这里主要学习数据模块当中的数据读取,数据模块通常还会分为四个子模块,数据收集、数据划分、数据读取、数据预处理。在进行实验之前,需要收集数据,数据包括原始样本和标签;有了原始数据之后,…

    2022年5月1日
    288
  • Windows10下安装linux(Utunbu)双系统「建议收藏」

    Windows10下安装linux(Utunbu)双系统「建议收藏」电脑的硬盘应该是mbr模式1.正常安装windows10系统2.打开windows10系统,安装EaSYCBD2.243.右键系统菜单,打开磁盘管理选择一个硬盘压缩100g(自己定义,不少于50G)。4.打开电源选项,关闭快速启动5.插入Untunbu启动盘,重启进入BIOS,关闭SecureBOOT,并以USB为第一启动项6.进入Untunbu,选择installUtunbu,不要联网,然后选择挂载点。10-20G的“/”,主区,etx4;200MB的“/boot”逻辑分区,etx

    2022年7月24日
    7
  • RFID RC522门禁系统「建议收藏」

    RFID RC522门禁系统「建议收藏」RFIDRC522门禁系统RFIDRC522门禁系统说明:基于51单片机的RFIDRC522门禁系统的主要功能是,在本系统中主要是演示了RFIDRC522门禁系统,在单片机内部的RAM中IDBUFFER中存了学号:1505106001对应16进制就是5bb61851;然后在RFIDRC522开卡系统中,为第一张卡在块地址0x08处,写入了学号,当卡中…

    2022年9月19日
    2
  • SSM框架介绍「建议收藏」

    SSM框架介绍「建议收藏」1、SSM框架简介SSM框架是SpringMVC,Spring和Mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,Controller层,Service层,DAO层四层,使用SpringMVC负责请求的转发和视图管理,Spring实现业务对象管理,Mybatis作为数据对象的持久化引擎。…

    2022年7月12日
    22
  • java输入方式「建议收藏」

    java输入方式「建议收藏」Java输入方式1、java.util.Scannerpublicstaticvoidmain(String[]args){//1、java.util.Scannervarsc=newScanner(System.in);System.out.print(“请输入姓名:”);Stringname=sc.nextLine();System.out.printf(“%n欢迎你:%s。”,name);}next()与nextLine

    2022年7月7日
    21

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号