blob: b090f1c15fb55d8676075869543ada61350823e1 (
plain)
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
|
module.exports = reduce
var objectKeys = require('object-keys');
function reduce(list, iterator) {
var keys = objectKeys(list)
, i = 0
, accumulator = list[0]
, context = this
if (arguments.length === 2) {
i = 1
} else if (arguments.length === 3) {
accumulator = arguments[2]
} else if (arguments.length >= 4) {
context = arguments[2]
accumulator = arguments[3]
}
for (var len = keys.length; i < len; i++) {
var key = keys[i]
, value = list[key]
accumulator = iterator.call(context, accumulator, value, key, list)
}
return accumulator
}
|