各种算法(二)

求“123456789876543212345678987654321…”中的第n位

1
2
3
4
5
6
7
8
9
function index(n){
if(n%16<10){
return n%16;
}else{
return 9-(n%16-9);
}
}

console.log(index(26));//8

实现
add(1);//1
add(1)(2); //3
add(1)(2)(3); //6

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var add = function(a) {
var sum = a;
var s = function(b) {
sum += b;
//s,继续累加后面的执行参数。
return s;
};
//当要打印一个对象时,会自动调用 valueOf()或 toString方法
s.toString = function() {
return sum;
};
//获取第一个参数赋值给sum后,s。
return s;
};

add(1)(2)(3);//6
//第一次调用add(),初始化了s,并将a保存在s的作用链中。
//然后返回s保证了第二次调用的是s函数。
//第二次之后的调用也是调用s,而在s中将传入的参数与保存在作用链中a相加并付给sum。

给定一个数组,返回所有的数字。如[1,’3’,false,null,100]=>[1,3,100]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function search(arr){
var temp = [];
for(var i in arr){
if(typeof arr[i] == "string" || typeof arr[i] == "number"){
temp.push(arr[i]);
}
}
temp = temp.map(function(val){
if(typeof parseInt(val) == "number")
return parseInt(val);
})
return temp;
}

console.log(search([1,'3',false,null,100])); //[1,3,100]
-------------本文结束 感谢您的阅读-------------