- 输出数组中出现次数最多的字母前数字的和(mt)
(emmm不知道思路有没有想复杂了…)var arr=[1,4,6,'a','c','e',4,'a',6,7,'c','c']; var more=new Map;//利用哈希表找出出现次数最多的字符 var s; var sum=0; for(var ele of arr){ if((typeof ele)=="string"){ if(more.has(ele)) more.set(ele,more.get(ele)+1);//已经存在,value+1 else more.set(ele,1);//不存在,存进哈希表,value初始值为1 } var max=Math.max(more.get(ele));//max为最多的出现次数 } for(var [key,value] of more){ if(max==more.get(key)) s=key;//s为出现次数最多的字符 } var lastindex=arr.lastIndexOf(s); for(var i=0;i<lastindex;i++){//定位到出现次数最多的字符前 if((typeof arr[i])=='number')sum+=arr[i];//元素类型为number,则加进sum } console.log(more); console.log(max); console.log(s); console.log(lastindex); console.log(sum);
- 数组扁平化(笔试也遇到过)
var arr=[[1,2,[2,[1,2],3]],[3,4,[5,0]],[6,7],[8,9]];
var ret=[];
function fn(arr){
for(var a of arr){
if((typeof a)=='object'){//注意是object不是array!!!
fn(a);
}
else ret.push(a);
}
return ret;
}
console.log(fn(arr));
console.log(arr);
- 实现斐波那契数列
function fibonacci(num){
var arr=[0,1];
while(arr.length<num){
let temp=arr.length-1;
arr.push(arr[temp]+arr[temp-1]);
}
return arr;
}
console.log(fibonacci(15))
- 实现trim函数(去除字符串左右两边空格)
function trim1(str){
return str.replace(/(^\s*)|(\s*$)/g,'');
}
说明:
^ 表示匹配非输入括号内的字符
\s 表示任何空白符 (\S 表示任何非空白符)
* 表示匹配前面子表达式零次或多次
g 表示全局匹配