【算法题】比较版本号、金额的千分位展示和节流函数算法实现

1. 比较版本号

说明: 实现一个方法,用于比较两个版本号(version1、version2)

如果version1 > version2,返回1;如果version1 < version2,返回-1,其他情况返回0

版本号规则x.y.z,xyz均为>=0的整数

function compareVersion(version1, version2) {
  const version1Arr = version1.split('.');
  const version2Arr = version2.split('.');
  let lMax = Math.max(version1Arr.length, version2Arr.length);
  for(let i = 0; i< lMax; i++){
    if(Number(version1Arr[i])>Number(version2Arr[i])){
      return 1
    }else if(Number(version1Arr[i])<Number(version2Arr[i])){
      return -1
    }
  }
  return 0
}
console.log(compareVersion("0.20.7", "0.20.8"));  // -1
console.log(compareVersion("0.20.9", "0.20.8"));  // 1
console.log(compareVersion("0.20.8", "0.20.8"));  // 0
console.log(compareVersion("2.8", "10.8"));  // -1

2.金额的千分位展示

说明: 一个整数金额: 1234567, 要展示为: 1,234,567
示例:

console.log(toPriceString(1234567)) // 1,234,567
function toPriceString(price) {
 let res = '';
 let p = price;
 if(p < 1000) return res+= p;
 while(true){
   let tmp = p % 1000;
   p = (p - tmp)/1000;
   res = ','+`00${tmp}`.slice(-3) + res;
   if(p < 1000 ) return p + res;
 }
}

3. 节流函数

说明: 有时我们需要监听页面的滚动事件来做一些处理,由于滚动事件频繁触发,为了避免多次无效调用,我们需要一个节流函数来限制执行频率。
请实现一个节流函数 throttle ,接受一个函数和等待时间为参数,返回一个拥有 throttle 功能的函数,在多次调用时,仅根据提供的等待时间来间隔执行。

例如:

document.addEventListener('scroll', throttle(function() {
  // 1000ms执行一次
}, 1000))

实现throttle函数:

function throttle(callback, wait) {
  /*
  let timer = null;
  return ()=>{
    if(!timer){
      timer = setTimeout(()=>{
        callback();
        timer = null;
      }, wait);
    }
  }
  */

  let time = new Date().getTime();
  return ()=>{
      if(new Date().getTime() - time >= wait){
        time = new Date().getTime();
        callback();
      }
  }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

h沐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值