js的数据结构和算法(主要记录常见算法)

js的数据结构:

1、数组(Array)
2、栈(Stack)
3、队列(Queue)
4、链表(Linked List)
5、树(Tree)
6、图(Graph)
7、堆(Heap)
8、散列表(Hash)

算法:

1.字符串回文:字符串倒序

	let a="sasdfghjkl"
    function changeStr(){
      return a.split("").reverse().join("");
    }

2.数组去重

1) 利用对象key值的唯一性
	let a=[1,3,3,3,1,2,6,4,5,6]
    function changes(){
      let obj={};
      let arr=[];
      for(let i in a){
        if(!obj[a[i]]){
          arr.push(a[i]);
          obj[a[i]]=true;
        }
      }
      return arr
    }


2)利用es6 new Set
function changes(){
     return Array.from(new Set(a))
    }

3.统计字符串出现最多的字母

let a='gffhghjllyesdfffnmfffssssffffjjffff'
    function changes(){
      let obj={}
     for(let i in a){
       if(!obj[a[i]]){
         obj[a[i]]=1;
       }else{
         obj[a[i]]++;
       }
     }
     let max=0;
     let maxStr
     for(let i in obj){
       if(obj[i]>max){
         max=obj[i];
         maxStr=i;
       }
     }
     return maxStr
    }

4. 排序算法

冒泡排序:纯数组,数组对象

let a = [4,6,32,11,5,667,39,56,78,2,42,7];
    let ob=[
      {age:11},
      {age:21},
      {age:8},
      {age:7}
    ];
    function changes(){
      a.sort(function(a,b){
        return a-b
      })
      ob.sort(function(a,b){
        return a.age-b.age
      })
      return ob
    }

快速排序,二路归并等

5.数组查重

let a = [4,6,32,6,5,6,5];
    function changes(){
      let obj={};
      for(let i in a){
        if(!obj[a[i]]){
          obj[a[i]]="0";
        }else{
          obj[a[i]]=Number(obj[a[i]])+1+''
        }
      }
      let n=0;
      for(let i in obj){
        if(obj[i]>=n){
          n=obj[i];
        }
      }

      let str=""
      for(let i in obj){
        if(obj[i]==n){
          str=str+i+" ";
        }
      }
      return str;
    }
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值