朋友碰到的笔试题,在此记录一下,并且记下碰到的有难点但是自己没注意的到的面试题!
一、检查一个值是否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);