-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcurrying.js
More file actions
48 lines (32 loc) · 874 Bytes
/
currying.js
File metadata and controls
48 lines (32 loc) · 874 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
var greet = function(greeting, name) {
console.log(greeting + ", " + name);
};
greet("Hello", "Heidi"); //"Hello, Heidi"
var greetCurried = function(greeting) {
return function(name) {
console.log(greeting + ", " + name);
};
};
greet("Hello")("Heidi"); //"Hello, Heidi"
var greetHello = greetCurried("Hello");
greetHello("Heidi"); //"Hello, Heidi"
greetHello("Eddie"); //"Hello, Eddie"
var statuses = {
rejected: 'rejected_api',
confirmed: 'comfirmed_ruby_api',
removed: 'removed_attr'
};
function getValue(obj) {
return function(key) {
return obj[key];
}
}
function getKey(obj) {
return function(value) {
return Object.keys(obj).find((key) => obj[key] === value);
}
}
var getStatusValue = getValue(statuses);
var getStatusKey = getKey(statuses);
getStatusValue('rejected') // 'rejected_api'
getStatusKey('comfirmed_ruby_api') // 'confirmed'