Skip to content

Commit d2ed96d

Browse files
committed
调整
1 parent 5bb3b61 commit d2ed96d

File tree

4 files changed

+91
-0
lines changed

4 files changed

+91
-0
lines changed

Currying.js

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
// 柯里化
2+
3+
// 普通函数
4+
5+
function Add(x, y) {
6+
return x + y
7+
}
8+
9+
// 柯里化后
10+
11+
function curryingAdd(x) {
12+
return function (y) {
13+
return x + y
14+
}
15+
}
16+
17+
console.log(Add(1, 2))
18+
console.log(curryingAdd(1)(2))
19+
20+
21+
22+
// add(1)(2)(3) = 6;
23+
// add(1, 2, 3)(4) = 10;
24+
// add(1)(2)(3)(4)(5) = 15;
25+
26+
function add() {
27+
// 第一次执行时,定义一个数组专门用来存储所有的参数
28+
var _args = [].slice.call(arguments);
29+
30+
// 在内部声明一个函数,利用闭包的特性保存_args并收集所有的参数值
31+
var adder = function () {
32+
var _adder = function() {
33+
// [].push.apply(_args, [].slice.call(arguments));
34+
_args.push(...arguments);
35+
return _adder;
36+
};
37+
38+
// 利用隐式转换的特性,当最后执行时隐式转换,并计算最终的值返回
39+
_adder.toString = function () {
40+
return _args.reduce(function (a, b) {
41+
return a + b;
42+
});
43+
}
44+
45+
return _adder;
46+
}
47+
// return adder.apply(null, _args);
48+
return adder(..._args);
49+
}
50+
console.log(add(1)(2)(3))
51+
console.log(add(1, 2, 3)(4))
52+
console.log(add(1)(2)(3)(4)(5))
53+
console.log(add(2, 6)(1))

KMP.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
let KMP = (S,T) => {
2+
let i = 0,j = 0;
3+
let next= [T.length]
4+
next[0] = -1
5+
while( i < S.length && j < T.length){
6+
if(j === -1 || S[i] === T[j]){
7+
i++
8+
j++
9+
}else{
10+
j = next[j]
11+
}
12+
}
13+
if( j === T.length){
14+
return i-j;
15+
}else{
16+
return -1 //没有
17+
}
18+
}
19+
20+
console.log(KMP('gjiemqaznnnqaz','qaz'))

README.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,21 @@
5353

5454
##### from() 方法用于通过拥有 length 属性的对象或可迭代的对象来返回一个数组。
5555

56+
##### split() 方法用于把一个字符串分割成字符串数组。
57+
58+
> var str="How are you doing today?";
59+
>
60+
>var n=str.split(" ",3);
61+
>
62+
> // How,are,you
63+
64+
>var str="How are you doing today?";
65+
>
66+
>var n=str.split("o");
67+
>
68+
> // H,w are y,u d,ing t,day?
69+
70+
71+
72+
73+

重新组装数组.png

42.4 KB
Loading

0 commit comments

Comments
 (0)