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)
上一篇 2025年10月14日 上午7:22
下一篇 2025年10月14日 上午8:01


相关推荐

  • 马斯克2025承诺接连跳票:从Robotaxi到人形机器人,激进愿景与执行力的巨大鸿沟

    马斯克2025承诺接连跳票:从Robotaxi到人形机器人,激进愿景与执行力的巨大鸿沟

    2026年3月13日
    4
  • 如何使用Pycharm

    如何使用Pycharm3 3 Python 的 IDE PyCharm1 集成开发环境 IDE 集成开发环境 IDE IntegratedDe 集成了开发软件需要的所有工具 一般包括以下工具 图形用户界面代码编辑器 支持代码补全 自动缩进 编译器 解释器调试器 断点 单步执行 2 PyCharm 介绍 PyCharm 是 Pytho

    2026年3月27日
    2
  • JTS使用实践

    JTS使用实践文章目录 JTS 使用实践一 前言简介环境二 正文基础说明使用记录 JTS 使用实践一 前言简介 JTSTopologyS JavaTopology 是一个开源的 Java 软件库 它为欧几里得平面线性几何提供了一个对象模型以及一组基本的几何函数 环境开发工具 IntelliJIDEA 1 8locationtec JTS https locationtech github io jts JTS 特性 https locationtech github

    2026年3月16日
    1
  • HDU 4778 内存搜索&amp;如压力

    HDU 4778 内存搜索&amp;如压力

    2022年1月13日
    42
  • python expect用法_expect用法

    python expect用法_expect用法a spawn spawn 命令是 Expect 的初始命令 它用于启动一个进程 之后所有 expect 操作都在这个进程中进行 如果没有 spawn 语句 整个 expect 就无法再进行下去了 使用方法就像下面这样 在 spawn 命令后面 直接加上要启动的进程等信息 当然 如果真的不要 spawn 过程也没有关系 虽然这样就没有办法单独执行 但是这个脚本可以与任何调用它的进程进行交互 b expect exp

    2026年3月19日
    1
  • MQ消息队列详解、四大MQ的优缺点分析

    MQ消息队列详解、四大MQ的优缺点分析MQ消息队列详解近期有了想跳槽的打算,所以自己想巩固一下自己的技术,想了解一些面试比较容易加分的项,近期准备深入研究一下redis和mq这两样,这总体上都是为了解决服务器并发的原因,刚翻到了一篇有关于mq的,觉得写得特别好,特此记录一下,也算是为了加深自己的印象。首先从MQ容易面对的面试题切入一下为什么要使用MQ消息队列有什么优点和缺点kafka、ActiveMQ、RabbitMQ、R…

    2022年6月2日
    34

发表回复

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

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