前言
笔试经常遇到一些函数题实现一些功能,把觉得有意思的记录下,顺带复习下,如果有更好的办法,欢迎指出!!
字符串转换为驼峰命名法
- 题目:已知有字符串foo='get-element-by-id',写一个function将其转化成驼峰表示法"getElementById”
很明显可以看出就是从第二个单词开始每个单词首字母大写,首先自然是获取每个单词,再把需要大写的字母大写再拼接。
function toStr(foo){
//根据分隔符获取到每个单词
var foos=foo.split("-")
for(var i=1;i<foos.length;i++){
//foos[i]就是每个单词,foos[i][0]就是他的首字母需要大写,再把原单词去掉首字母进行拼接,最终取代原来的单词
foos[i]=foos[i][0].toUpperCase()+foos[i].slice(1)
}
return foos.join('')
}
数组去重
- 普通遍历数组
function getArr(arr){
for(var i=0;i<arr.length;i++){
var s=arr[i]//记录当前数据
for(var j=i+1;j<arr.length;j++){
if(s==arr[j]){//与原数组进行比较,如果相同,则存在重复,需要去掉这个数组里的数据,继续比较下去
arr.splice(j,1)
j=j-1//需要更改下标
}
}
}
return arr;
}
- 利用ES6的set容器
function getArr(arr){
var arr2=arr//定义一个数组复制原来的
var set=new Set(arr2)//利用set容器的不可重复特性实现去重
arr.splice(0,arr.length)//原来的数组置为空,准备接受去重后的数据
arr=Array.from(new Set(set))
return arr;
}
编写一个函数,计算任意两个数字之间所能组成的奇数个数,数字必须是个位数.比如:计算0~3之间能组成的奇数是: 01、03、13、21、23、31
function getNum(n,m){
var arr=[]
for(var i=n;i<=m;i++){
if(i%2==1){
arr.push(i)
}
}
var count=0
for(var j=0;j<arr.length;j++){
for(var i=n;i<=m;i++){
count++
console.log(i*10+arr[j])
}
}
console.log(n+"和"+m+"两个数字之间可以组成的奇数个数为"+count)
}
js递归的方式写1到100求和
function add(num1=1,num2=2){
var num = num1+num2;
if(num2+1>100){
return num;
}else{
return add(num,num2+1)
}
}
var sum =add();
字符串按‘红黄蓝’排序,例如‘黄红蓝红’排序后变为‘红红黄蓝’
function sortStr(str){
var r=0,b=0,y=0
var s=""
for(var i=0;i<str.length;i++){
switch(str[i]){
case '红':
r++;
break;
case '蓝':
b++;
break;
case '黄':
y++;
break;
}
}
for(var i=0;i<r;i++)
s+='红'
for(var i=0;i<y;i++)
s+='黄'
for(var i=0;i<b;i++)
s+='蓝'
return s;
}
函数实现多个数组取交集
function get(arrs){
var b=[]//存放交集结果的数组
for(var i=0;i<arrs.length;i++){
if(i==0){
b=[...new Set(arrs[i])].filter(item=>new Set(arrs[i+1]).has(item))
i++
}else{
b=[...new Set(b)].filter(item=>new Set(arrs[i]).has(item))
}
}
return b;
}
未完待续。。。 持续关注敬请期待~