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