JS内置对象常见的算法
详情进入链接https://www.bilibili.com/video/BV1Sy4y1C7ha/?p=184&spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=7ae8fe1a13f5a796229438a9a4ccc78e B站pink老师的js基础集
特别注释:所有代码均以视频讲解的思想为主,部分代码进行了些许改动但不影响思想的一致性
另外文末代码有点小瑕疵,具体内容已经注释清楚,调用时请注意
Math对象
---经典算法,生成一个范围内[min,max]的随机整数 --核心思想:random()生成随机数与floor()向下取整function getInt(min,max){
var num = Math.floor(Math.random()*(max-min+1))+min
return num;
}
console.log(getInt(1,50));
Date对象
---经典算法,通过时间戳实现倒计时效果 --核心思想:时间戳永不重复 function countDown(settime,nowtime){
var timeleft=(settime-nowtime)/1000;
var day=parseInt(timeleft/60/60/24);
day=day<10 ? '0'+day : day;
var hour=parseInt(timeleft/60/60%24);
hour=hour<10 ? '0'+hour : hour;
var minutes=parseInt(timeleft/60%60);
minutes=minutes<10 ? '0'+minutes : minutes;
var seconds=parseInt(timeleft%60);
seconds=seconds<10 ? '0'+seconds : seconds;
return "剩余"+day+"日"+hour+"时"+minutes+"分"+seconds+"秒";
}
var settime=new Date("2022-11-30");
var nowtime=new Date();
console.log(countDown(settime,nowtime));
Array对象
---经典算法,完全体升序排列var arr=[5,99,2,21,17,77,6,6,2,21,17,77,50];
console.log(arr.sort(function(a,b){
return a-b;
// return b-a;降序
}))
经典算法,通过数组索引去重
核心思想:用indexof查询新数组中是否有旧数组arr[i]元素
function unique(arr){
var newarr=[];
for(var i =0;i<arr.length;i++){
if(newarr.indexOf(arr[i])==-1){
newarr.push(arr[i]);
}
}
return newarr;
}
console.log(unique(arr));
String对象
---经典算法,统计字符串中某个字符出现的次数 --核心思想:indexOf('value',[startPosition]);function getCounts(string,value){
var counts=0;
var index=string.indexOf(value);
// console.log(indexes);
while(index!=-1){
index=string.indexOf(value,index+1);
counts++;
}
return counts;
}
var str="asidlksanlhklahfjknxjkaac";
console.log(getCounts(str,'a'));
经典算法,统计字符串中字符频次,并输出频次最高的字符
核心思想:通过charAt()得到每个字符+obj[‘value’]方法判断对象obj内是否有某个属性,有则+1,无则为1
var str='shdjkfnfsdbbbcccjhzxnkhjkhajhdkajnxawokqx';
var obj={};
for(var i=0;i<str.length;i++){
var chars=str.charAt(i);//得到一个字符chars
if(obj[chars]){ //将chars作为对象的属性名创建一个对象属性,通过if判断对象内是否有同样的属性
obj[chars]++; //访问chars属性值,有的情况下++
}
else{
obj[chars]=1;//首次出现设置为1
}
}
console.log(obj);
var max=0;//存储value
var ch=[];//存储key
var index=0;//存储位置
for(var k in obj){
if(obj[k]>max){
ch[0]=k;//一直修改固定位置字符---此处还有问题,无论是ch[index]=k还是index重置为0再ch[index]=k均可以得到正确结果,过段时间忙完了再去深究,现在猜测方向是js对象的存储方式跟变量作用域有关,有了结果会更新到评论区
max=obj[k];
}
else if(obj[k]==max){//存储最高频次相同的字符
ch[++index]=k;
}
else continue;
}
console.log(ch);
console.log(max);