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