http://www.cnblogs.com/TomXu/archive/2012/02/10/2342098.html
1.找出数字数组中最大的元素(使用Math.max函数)
2.转化一个数字数组为function数组(每个function都弹出相应的数字)
3.给object数组进行排序(排序条件是每个元素对象的属性个数)
4.利用JavaScript打印出Fibonacci数(不使用全局变量)
5.实现如下语法的功能:var a = (5).plus(3).minus(6); //2
6.实现如下语法的功能:var a = add(2)(3)(4); //9
<script>
// 1.求数组最大值
function getMax(arr) {
if(arr.length === 1) {
return arr[0];
} else if(arr.length === 2) {
return Math.max(arr[0], arr[1]);
}
var subArr = arr.slice(1, arr.length);
var second = arguments.callee(subArr);
return Math.max(arr[0], second);
}
// 另类解法
function getMax2(arr) {
return Math.max.apply(null, arr);
}
console.log(getMax([1,2,3,3 ,3 ,2 , 5, 8, 898]));
// 2.转化一个数字数组为function数组
function convert(array) {
var temp = [];
for(var i = 0, len = array.length; i < len; i++) {
temp[i] = (function(num) {
return function() {
alert(num);
}
})(array[i]);
}
return temp;
}
var fArray = convert([1,2,3,4,555]);
fArray[4]();
// 3.给object数组进行排序
function sortObj(array) {
var temp = [], key, objLen = 0;
for(var i = 0, len = array.length; i < len; i++) {
for(key in array[i]) {
objLen ++;
}
array[i]['HWSLObjLen'] = objLen;
objLen = 0;
}
array.sort(function(a,b) {
if(a['HWSLObjLen'] > b['HWSLObjLen']) {
return 1;
} else if(a['HWSLObjLen'] < b['HWSLObjLen']) {
return -1
} else {
return 0;
}
});
//console.log(array);
}
sortObj([{'a':1,'b':2}, {'a':1,'b':2, 'c':3, 'd':4}, {'a':1,'b':2, 'c':3}, {'a':1,'b':2, 'c':100}]);
// 4.利用JavaScript打印出Fibonacci数
function fibo(n) {
if(n === 1 || n === 2) {
return 1;
}
return arguments.callee(n-1) + arguments.callee(n-2);
}
//console.log(fibo(5));
// 5.实现如下语法的功能:var a = (5).plus(3).minus(6); //2
Number.prototype.plus=function(a){
return this+a;
}
Number.prototype.minus=function(a){
return this-a;
}
console.log((5).plus(3).minus(6)); //2
// 6.实现如下语法的功能:var a = add(2)(3)(4); //9 @Gray Zhang
function add(x) {
var result = x;
var fn = function(x) {
result += x;
return fn;
};
fn.toString = fn.valueOf = function() { return result; };
return fn;
}
console.log(add(2)(3)(3));
</script>