Skip to content

Commit ea5f165

Browse files
committed
fix: add index args to object iterators
1 parent 965b1b3 commit ea5f165

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

spec/fauxdash.spec.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,9 +217,9 @@ describe('fauxdash', function () {
217217
it('should iterate on object key/values', function() {
218218
const keys = []
219219
const values = []
220-
_.each({a: 1, b: 2, c: 3}, (v, k) => {
220+
_.each({a: 1, b: 1, c: 1}, (v, k, i) => {
221221
keys.push(k)
222-
values.push(v)
222+
values.push(v + i)
223223
})
224224
keys.should.eql(['a','b','c'])
225225
values.should.eql([1,2,3])
@@ -228,6 +228,9 @@ describe('fauxdash', function () {
228228
it('should map on object key/values', function() {
229229
_.map({a: 1, b: 2, c: 3}, (v, k) => `${k}:${v}`)
230230
.should.eql(['a:1','b:2','c:3'])
231+
232+
_.map({a: 1, b: 1, c: 1}, (v, k, i) => `${k}:${v+i}`)
233+
.should.eql(['a:1','b:2','c:3'])
231234
})
232235

233236
it('should reduce on object key/values', function() {
@@ -236,6 +239,9 @@ describe('fauxdash', function () {
236239
_.reduce({a: 1, b: 2, c: 3}, (acc, v, k) =>
237240
acc += `${k}=>${v}`
238241
, '').should.equal('a=>1b=>2c=>3')
242+
_.reduce({a: 1, b: 1, c: 1}, (acc, v, k, i) =>
243+
acc += `${k}=>${v+i}`
244+
, '').should.equal('a=>1b=>2c=>3')
239245
})
240246

241247
it('should get values from object keys', function () {

src/index.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ function defaults (target, ...sources) {
113113

114114
function each (obj, iterator) {
115115
return Object.keys(obj)
116-
.forEach(key => iterator(obj[key], key))
116+
.forEach((key, i) => iterator(obj[key], key, i))
117117
}
118118

119119
function exists (x) {
@@ -242,7 +242,7 @@ function lift (asyncFn) {
242242
}
243243

244244
function map (obj, fn) {
245-
return Object.keys(obj).map(k => fn(obj[k], k))
245+
return Object.keys(obj).map((k, i) => fn(obj[k], k, i))
246246
}
247247

248248
function mapCall (method, map) {
@@ -299,8 +299,8 @@ function parseFunction (fn) {
299299
}
300300

301301
function reduce (obj, fn, acc) {
302-
Object.keys(obj).forEach(k => {
303-
acc = fn(acc, obj[k], k)
302+
Object.keys(obj).forEach((k, i) => {
303+
acc = fn(acc, obj[k], k, i)
304304
})
305305
return acc
306306
}

0 commit comments

Comments
 (0)