Collection iteration more similar to Map.

This commit is contained in:
Julien Fontanet 2015-04-18 22:04:37 +02:00
parent 7024b5ec1b
commit 160522c520
2 changed files with 34 additions and 0 deletions

View File

@ -163,6 +163,22 @@ export default class Collection extends EventEmitter {
* [Symbol.iterator] () {
const {_items: items} = this
for (let key in items) {
yield [key, items[key]]
}
}
* keys () {
const {_items: items} = this
for (let key in items) {
yield key
}
}
* values () {
const {_items: items} = this
for (let key in items) {
yield items[key]
}

View File

@ -39,8 +39,26 @@ describe('Collection', function () {
it('is iterable', function () {
const iterator = this.col[Symbol.iterator]()
expect(iterator.next()).to.eql({done: false, value: ['bar', 0]})
expect(iterator.next()).to.eql({done: true, value: undefined})
})
describe('#keys()', function () {
it('returns an iterator over the keys', function () {
const iterator = this.col.keys()
expect(iterator.next()).to.eql({done: false, value: 'bar'})
expect(iterator.next()).to.eql({done: true, value: undefined})
})
})
describe('#values()', function () {
it('returns an iterator over the values', function () {
const iterator = this.col.values()
expect(iterator.next()).to.eql({done: false, value: 0})
expect(iterator.next()).to.eql({done: true, value: undefined})
})
})
describe('#add()', function () {