[Question d'algorithme] Comparez le numéro de version, le millième affichage du montant et la mise en œuvre de l'algorithme de la fonction de limitation

1. Comparez les numéros de version

Description : Implémenter une méthode de comparaison de deux numéros de version (version1, version2)

Si version1 > version2, renvoie 1 ; si version1 < version2, renvoie -1, sinon renvoie 0

Règle de numéro de version xyz, xyz sont tous des nombres entiers >=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. Millième affichage du montant

Description : Un montant entier : 1234567, à afficher sous la forme : 1 234 567
Exemple :

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. Fonction d'accélérateur

Remarque : Parfois, nous devons surveiller l'événement de défilement de la page pour effectuer certains traitements. Étant donné que l'événement de défilement est déclenché fréquemment, afin d'éviter plusieurs appels invalides, nous avons besoin d'une fonction de limitation pour limiter la fréquence d'exécution.
Veuillez implémenter une fonction de limitation, qui accepte une fonction et un temps d'attente comme paramètres, et renvoie une fonction avec une fonction de limitation. Lorsqu'elle est appelée plusieurs fois, l'exécution sera exécutée à des intervalles basés uniquement sur le temps d'attente fourni.

Par exemple:

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

Implémenter la fonction d'accélérateur :

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

Guess you like

Origin blog.csdn.net/qq_42146383/article/details/123586852