javascript题目

最近在看汤姆大叔《深入正解JavaScript》系列,虽然看得有点晕乎乎的,但也感到其乐无穷。非常感谢汤姆大叔的精彩讲解。今天看到了系列(20),然后后面有六道题目,详细通过这些题目也可以再次加深对JavaScript基础核心特性的理解。最后一个参考了下面的跟帖。(哈哈……我不是故意的)
  1. 找出数字数组中最大的元素(使用Match.max函数)
    // 找出数字数组中最大的元素(使用Match.max函数)
    var numArr = [1, 2, 3, 4, 5];
    var maxNum = Math.max.apply(null, numArr);
    console.log(maxNum);
  2. 转化一个数字数组为function数组(每个function都弹出相应的数字)
    // 转化一个数字数组为function数组(每个function都弹出相应的数字)
    function toChange(numArray){
        var fnArray = Array();
        for(var i = 0, ii = numArray.length; i < ii; ++i){
            var func = (function(num){
                return function(){
                    alert(num);
                }
            })(numArray[i]);
            fnArray.push(func);
        }
        return fnArray;
    }
    
    var numArr = [1, 2, 3, 4, 5];
    var funcArr = toChange(numArr);
    funcArr[2]();
  3. 给object数组进行排序(排序条件是每个元素对象的属性个数)
    // 给object数组进行排序(排序条件是每个元素对象的属性个数)
    function rule(o1, o2){
        var sizeObj = function(o){
            var size = 0;
            for(var p in o){
                if(o.hasOwnProperty(p)){
                    ++size;
                }
            }
            return size;
        }
        return sizeObj(o1) - sizeObj(o2);
    }
    
    var objArr = [
        {x: 1, y: 2, z: 3},
        {x: 1, y: 2},
        {x: 1}
    ];
    objArr.sort(rule);
    console.log(objArr);
  4. 利用JavaScript打印出Fibonacci数(不使用全局变量)
    // 利用JavaScript打印出Fibonacci数(不使用全局变量)
    function fibNum(count){
        var fibArray = new Array();
        if(count <= 2){
            for(var i = 0; i < count; ++i){
                fibArray.push(i);
            }
        }
        else{
            fibArray.push(0);
            fibArray.push(1);
            for(var i = 2; i < count; ++i){
                var nextNum = fibArray[i-1] + fibArray[i-2];
                fibArray.push( nextNum );
            }
        }
        return fibArray;
    }
    
    console.log(fibNum(10));
  5. 实现如下语法的功能:var a = (5).plus(3).minus(6);
    // 实现如下语法的功能:var a = (5).plus(3).minus(6);
    Number.prototype.plus = function(i){
        return this + i;
    }
    Number.prototype.minus = function(i){
        return this - i;
    }
    
    var a = (5).plus(3).minus(6);
    console.log(a);
  6. 实现如下语法的功能:var a = add(2)(3)(4);
    // 实现如下语法的功能:var a = add(2)(3)(4);
    function add(x) {
        var ret = x,
        fn = function(x){
            ret += x;
            return fn;
        };
        fn.toString = fn.valueOf = function(){
            return ret;
        };
    
        return fn;
    }
    
    var a = add(2)(3)(4);
    console.log(a);

posted on 2012-10-18 12:06  27_Man  阅读(1028)  评论(1)    收藏  举报