蒋渑恪 山东科技大学·2022届
APP 内打开
分享
2
55

携程前端一面

五道题目


1.比较经典的

复制代码

for(let i=0;i<10;i++){

    setTimeout(function(){

        console.log(i)

    },1000)

}

如何输出0 1 2 3...答的let,闭包,第三个参数

问为什么let可以输出这个,答的作用域,面试官让详细解释,我不知道是要怎么样详细解释


2.引用类型考察

复制代码

let a={m:10,n:30}

let b=a;

let c=b;

b.m=20;

let d={...b}

c={n:40}

 

console.log(a.m) //20

console.log(a===b) //true

console.log(a===c) //false

console.log(b===d) //false(...运算符第一层深拷贝,如果某项还是引用类型会互相影响)

console.log(b===c) //false


3. 千分位补充逗号,且保留两位小数

复制代码

let str='1234567'

function convertMoney(str){

    let strarr=str.split('.');

    let first=strarr[0];

    let second=strarr[1] || '00';

    let idx=0;

    let res=[]

    for(let i=first.length-1;i>=0;i--){

       idx++;

       res.unshift(first[i])

       if(idx %3==0){

          res.unshift(',')

       }

       console.log(res)

    }

    let results=res.join('')+'.'+ second;

    return results

}

console.log(convertMoney(str))

也可以用正则,网上的答案

复制代码


let str='1234567'

function convertMoney(str){

    let reg=/\d{1,3}(?=(\d{3})+$)/g;

    let newarr=str.replace(reg,'$&,')

    return newarr

}

console.log(convertMoney(str))


4.按照index排序

当时没有写出来。。怒摔小饼干!!

复制代码

let arr=[

    {value:'北京',index:'beijing'},

    {value:'上海',index:'shanghai'},

    {value:'北海道',index:'beihaidao'},

    {value:'日本',index:'ribeng'}

]

 

let newarr=arr.sort(function(a,b){

    return justify(a.index,b.index)

})

 

function justify(before,after){

   if(before.length>=1 && after.length>=1){

        if(before[0].charCodeAt()

            return -1

        }else if(before[0].charCodeAt()>after[0].charCodeAt()){

            return 1

        }else{

            justify(before.slice(1),after.slice(1))

        }

   }else if(before.length>=1 && after.length<1){

       return -1

   }else if(before.length<1 && after.length>=1){

       return 1

   }else{

       return 0

   }

}

console.log(JSON.stringify(newarr))


5.把数字提取出来

平时做正则容易出错,比较怂还是用charCodeAt()了


复制代码

let str='ahbc345lkiol876kkk67';

let res=[];

let temp=[];

for(let i=0;i

    if(str[i].charCodeAt()>='0'.charCodeAt() && str[i].charCodeAt()<='9'.charCodeAt() ){

        temp.push(str[i])

    }else{

        res.push(temp)

        temp=[]

    }

}

res.push(temp)

console.log(res.filter(item=>item!=0))

可以用正则

复制代码

let str='ahbc345lkiol876kkk67';

let reg=/\d+/g

let newreg=str.match(reg)

console.log(newreg)


不太会搞这些,有错的或者有更好的方法欢迎大家指出来我学习一下


发布时间:2020年07月10日
用户头像
我来说两句…
共 2 条评论
Mandelbrot 悉尼大学·2022届
大佬大佬
2020年09月16日 回复
Luv Letter 广东白云学院·2022届
太厉害了
2020年09月16日 回复