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…


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)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • osip2添加多个不同类型body[通俗易懂]

    osip2添加多个不同类型body[通俗易懂]最近接到任务,要写一个SIP协议转换的服务器。但个人对SIP了解非常少,幸好学长写有一个类似的东西,于是向学长请教。但是由于个人悟性问题(微笑),我除了知道了用了osip和exosip这个库之外,其他一无所知。于是回实验室开始看源码+网上查资料,发现了一个问题:目前学长的程序还有网上的资料千篇一律全是只添加了一个body(即SDP部分),但是根据实际,我需要添加两个body(SDP和XML),但网

    2022年6月29日
  • 完美者常用软件光盘2008

    完美者常用软件光盘2008下载地址:http://down.wmzhe.com/html/view-9663.htm1.JPG(45.22KB)2007-12-2719:102.JPG(49.8KB)2007-12-2719:103.JPG(44.11KB)2007-12-2719:1044.JPG(55.81KB)2007-1

    2022年7月26日
  • h5页面 请在微信客户端打开链接_模拟微信接口时,提示“请在微信客户端打开链接”(转)…[通俗易懂]

    h5页面 请在微信客户端打开链接_模拟微信接口时,提示“请在微信客户端打开链接”(转)…[通俗易懂]背景描述相信有模拟微信页面请求的测试都有看到过这个页面,简单点说就是爬虫爬微信页面,进行回放的时候会出现这个页面。大概在1年前,专门安排了一个人去解决这个技术问题,遗憾的是当时没有找到解决方案,接下来所有微信端的接口测试和性能测试都无法进行,今天和大家分享下我们的解决方案,希望大家可以绕过微信的坑。业务场景我这里以JMeter来举例,我们可以通过在JMeter上开启代理,手机上设置代理来录制微信端…

    2022年6月7日
  • android 上手维修设备和推断启动服务

    android 上手维修设备和推断启动服务

    2022年1月13日
  • 【全网独家】手把手教你制作一个Ubuntu Deb 安装包「建议收藏」

    Ubuntu Deb 安装包加班到9点多了,今天本来准备整理一下Linux常用命令,没有时间了。目前还没有回家。就发一篇昨天整理的一个deb打包的教程,网上搜了很多,都是讲解命令的,没有一个比较完整的教程。如果你公司用到了deb打包,可以仔细阅读一下,如果你没有接触过deb打包,那可以简单了解一下,毕竟技多不压身。本文主要参考博文:Debconf程序员的教程 :http://www.fif…

    2022年2月28日
  • 用JAVA判断一个数是否为素数(质数)

    素数(primenumber)又称质数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。有时经常遇到用java判断素数的问题,为大家贴上怎么用java判断出一个数是否为素数。publicstaticbooleanisPrime(intN){if(Nfor(inti=2;i*iif(N%i=

    2022年4月12日

发表回复

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

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