js拾遗

1.找出数字数组中最大的元素(使用Match.max函数)
Math.max.apply(null, [1,2,3]);

2.转化一个数字数组为function数组(每个function都弹出相应的数字)

function transition(numArray) {
  var num;
  for (var i = 0, len = numArray.length; i < len; ++i) {
    num = numArray[i];
    numArray[i] = (function (j) {
      return function() {alert(j);}
    }(num));
  }
}

 



3.给object数组进行排序(排序条件是每个元素对象的属性个数)


4. 实现如下语法的功能:var a = (5).plus(3).minus(6); //2

Number.prototype.plus=function(a){
    return this+a;
    }
Number.prototype.minus=function(a){
    return this-a;
    }
var a = 5;
b=a.plus(3).minus(6);
console.log(b);

 



5. 实现如下语法的功能:var a = add(2)(3)(4); //9

function add(a) {
  return function(b) {
     a += b;
     return function(c) {
       return a +=c;
     }
  }
}

 



6.利用JavaScript打印出Fibonacci数(不使用全局变量)
ps:Fibonacci数 1 1 2 3 5 8
代码一:

function fib(num){
    if(num==1 || num==2){
        return 1;
        }
        return arguments.callee(num-1) + arguments.callee(num-2);
    }

 



代码二:

var fib = (function() {
  var array = [];
  
  return function(n) {
   if (array[n]) return array[n];
    
    if (n < 1) {
      array[n] = 0;
    } else if (n == 1 || n == 2) {
      array[n] = 1;
    } else {
      array[n] = fib(n-1) + fib(n-2);
    }
    
    return array[n];
  }
})();

 



代码三:

var fib = function(n) {
   if (fib[n]) return fib[n];
    
    if (n < 1) {
      return 0;
    } else if (n == 1 || n == 2) {
      fib[n] = 1;
    } else {
      fib[n] = fib(n-1) + fib(n-2);
    }
    
    return fib[n];
};

代码二,代码三性能较高,内部缓存了一个斐波那契数列的数组,如果之前计算过某个数,就直接返回,不用重新计算了




posted @ 2015-02-12 17:19  蜡笔不小心  阅读(159)  评论(0编辑  收藏  举报