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

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();
      }
  }
}

猜你喜欢

转载自blog.csdn.net/qq_42146383/article/details/123586852