前端面试题

朋友碰到的笔试题,在此记录一下,并且记下碰到的有难点但是自己没注意的到的面试题!

一、检查一个值是否NaN?

function isNumber(x) {
    if (isNaN(x)) {
            console.log("Not a number");
        } else {
            console.log("Number")
        }
    }

二、有如下函数:

sum(2,3) =>5;
sum(2)(3)=>5;
请写出sum函数的具体实现。

function sum(a, c) {
    if (isNaN(c)) {
        return function(b) {
            return a + b;
        }
    }
    return a + c;
}

该题考查的是一个以前没接触过的东西,叫做柯里化(Currying)
自己的解决方法是return一个函数来解决,柯里化可以参考这个网址:链接

三、编写函数计算从整数1到n共出现多少个0。

    function find(n) {
        var box = [];
        var temp = 0;
        for (var i = 1; i <= n; i++) {
            box.push(i);
        }

        for(var i=0;i<box.length;i++){
            if (box[i].toString().match(/0/) == 0) {
                temp +=box[i].toString().match(/0/g).length
            }
        }
        console.log("从整数1到" + n + "共出现了" + temp + "个0")
    }
    find(100);

感谢评论区@galler717 的指正,已经将代码修改。感觉那个正则里面的域的适用很有讲究。

四、使用JavaScript的prototype实现一个简单的继承例子。

function Dog(breed){
    this.breed = breed;
}
var buddy = new Dog("hashiqi");
Dot.prototype.bark = function(){
    console.log("woof");
}
buddy.bark();
var snoopy = new Dog("Beagle");
snoopy.bark();

五、编写一个JavaScript函数,实现从数组里清楚重复的元素。【算法、字符串操作】

Array.prototype.unique=function(){
    for(var i = 0; i < this.length; i++){ 
       if(temp.indexOf(this[i]) == -1){ 
           temp.push(this[i]); 
       } 
    } 
    return temp; 
} 

直接给数组的原型上添加一个方法,设立一个空的数组temp,检查temp 里面是不是有了,没有的话就把该项添加进temp数组,最后返回temp数组。

六、包含对象的数组转换成字符串。

阿里的前端面试题,给你

 var obj = [{
        name: 'xiaoming',
        'age': 18
    }, {
        name: 'xiaohong',
        'age': 17
    }];

这么一个包含对象的数组,要求通过一个var_dump(obj)函数,输出

"[{"name":"xiaoming","age":18},{"name":"xiaohong","age":17}]"

这样的字符串。对于只听过,想过没真正接触过json的人来说,确实有点摸不清头脑啊,虽然知道思路,但是方法什么的的确不熟。
我的思路大体是先把对象转换成字符串,再把字符串组成新的数组,输出的时候两边加上的方括号。

var obj = [{
    name: 'xiaoming',
    'age': 18
}, {
    name: 'xiaohong',
    'age': 17
}];

var var_dump = function(obj) {
    var arr = [];
    for (var i = 0; i < obj.length; i++) {
    //对象转换成字符串,有个JSON的方法,以前没接触,通过这次题目也还是学习了。
        newstr = JSON.stringify(obj[i]);
        arr.push(newstr);
    }
    console.log("[" + arr.toString() + "]");
}

var_dump(obj);

七、obj序列化成JSON字符串。

已知obj变量定义如下:

let obj = {};
let a=1;
let b=1;
Object.assign(obj,{a,b,obj});

请将obj序列化成json字符串:

{
    "a":1,
    "b":1
}

第一次看到let这么一个关键词,还不是太明白,我是用var这么写的。

var obj = {};
var a=1;
var b=1;

var obj = Object.assign({a,b});
var test2 = JSON.stringify(obj);//JSON自带将对象转JSON字符串的方法
console.log(obj,test2);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值