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 each(list, iter) {
for (let i = 0; i < list.length; i++) {
iter(list[i]);
}
return list;
}
var slice = Array.prototype.slice;
function rest(list, num) {
return slice.call(list, num || 1);
}
function reduce(list, iter, memo) {
if (arguments.length === 2) {
memo = list[0];
list = rest(list);
}
each(list, function (val) {
memo = iter(memo, val);
});
return memo;
}
console.log(
reduce(
users,
function (memo, val) {
return (memo += val.age);
},
0
)
);
console.log(
reduce([1, 2, 3], function (memo, val) {
return (memo += val);
})
);
console.log(
reduce({ 0: 1, 1: 12, 2: 30, length: 3 }, function (memo, val) {
return (memo += val);
})
);