var users = [
{ name: "BY", age: 45 },
{ name: "SJ", age: 26 },
{ name: "ES", age: 27 },
{ name: "YJ", age: 49 },
{ name: "DH", age: 42 },
{ name: "JE", age: 37 },
{ name: "YH", age: 48 },
];
function filter(list, predi) {
var _list = [];
each(list, function (val) {
if (predi(val)) {
_list.push(val);
}
});
return _list;
}
function map(list, mapper) {
var _list = [];
each(list, function (val) {
console.log(mapper(val));
console.log(val);
_list.push(mapper(val));
});
return _list;
}
function each(list, iter) {
for (let i = 0; i < list.length; i++) {
iter(list[i]);
}
return list;
}
function curryr(fn) {
return function (a, b) {
return arguments.length == 2
? fn(a, b)
: function (b) {
return fn(b, a);
};
};
}
var get = curryr(function (obj, key) {
return obj == null ? undefined : obj[key];
});
console.log(
map(
filter(users, function (val) {
return val.age > 40;
}),
get("name")
)
);
console.log(
map(
filter(users, function (val) {
return val.age > 40;
}),
function (val) {
return get("name")(val);
}
)
);
console.log(get(users[0], "name"));