- 写在前面的话
如果你不Baidu/Google,能答对4个及以上并且想拿高工资,那就可以联系汤姆大叔了。
(说实话,我是不信的。)
- 6个题目
- 找出数字数组中最大的元素(使用Match.max函数)
- 转化一个数字数组为function数组(每个function都弹出相应的数字)
- 给object数组进行排序(排序条件是每个元素对象的属性个数)
- 利用JavaScript打印出Fibonacci数(不使用全局变量)
- 实现如下语法的功能:var a = (5).plus(3).minus(6); //2
- 实现如下语法的功能:var a = add(2)(3)(4); //9
- 测试点分析
考点解析,慎入
- Math.max、apply或call函数
- 作用域、闭包、函数表达式立即执行
- 排序比较函数、获取对象属性的个数
- 条件语句、函数调用自身
- 给原生对象添加方法
- 函数的定义及用法,参数作用域,以函数为值传递;
- 关尔先生的答案
下方是关尔先生的答案,慎入
//随机一个【10到20】的数组
var array=[];
for (var i=0;i<10;i++){
array.push(Math.floor(Math.random()*11)+10);
}
console.log(array);
console.log("-------第1题---------------------");
//程序如下:
var maxNum=Math.max.apply(Math,array);
//完了,输出结果
console.log("上面的数列最大值是:"+maxNum);
console.log("---------第2题-------------------");
//程序如下:
var arrayFunction=[];
for( a in array){
arrayFunction[a]=function (x) {
return function () {
console.log(x);
}
}(array[a])
}
//完了,输出结果
for(o in arrayFunction){//输出对象数组
console.log("第"+o+"个函数弹出值如下:");
arrayFunction[o]();
}
console.log("---------第3题-------------------");
//随手写一个对象数组
var arrayObject=[{name:"A",age:1,job:"AA",good:"AAA"},
{name:"A",age:1,good:"AAA"},
{name:"A",age:1,job:"AA",good:"AAA"},
{name:"A"},
{name:"A",job:"AA",good:"AAA"},
{job:"AA",good:"AAA"}];
//给对象数组排序
arrayObject.sort(function (a,b) {
var a=Object.getOwnPropertyNames(a).length;
var b=Object.getOwnPropertyNames(b).length;
return a-b;
});
//完了,输出结果
console.log("对象数组按属性个数的从小到大排列:");
for(o in arrayObject){//输出对象数组
console.log(o+":");
console.log(arrayObject[o]);
}
console.log("-------------第4题---------------");
//程序如下:
function Fibonacci (n) {
var FibonacciArray=Array();
for(var i=1;i<=n;i++){
FibonacciArray.push(
(function(ii){return ii<3?1:arguments.callee(ii-1)+arguments.callee(ii-2);})(i)
);
}
return FibonacciArray;
}
//完了,假如要前15个,结果如下:
var n=15;
console.log("输出前"+n+"个斐波那契数列的数组");
console.log(Fibonacci(n));
console.log("-----------第5题-----------------");
//实现如下语法的功能:var a = (5).plus(3).minus(6);//2
//给原生Number对象添加方法
Number.prototype.plus=function (a) {
return Number(this)+a;
};
Number.prototype.minus=function (a) {
return Number(this)-a;
};
//完了,输出结果
var b = (5).plus(3).minus(6);
console.log('(5).plus(3).minus(6)='+b);
console.log("---------第6题-------------------");
//实现如下语法的功能:var a = add(2)(3)(4);//9
//程序如下:
function add(a) {
return function (b) {
return function (c) {
return a+b+c
}
}
}
//完了,输出结果
var a=add(2)(3)(4);
console.log('add(2)(3)(4)='+a);