JS内置对象常见的算法

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);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值