diff --git a/any/index.js b/any/index.js new file mode 100644 index 0000000..d45e6c2 --- /dev/null +++ b/any/index.js @@ -0,0 +1,8 @@ +module.exports = function any(iterable, predicator) { + for (const element of iterable) { + if (predicator(element)) { + return true; + } + } + return false; +} diff --git a/index.js b/index.js index 322fe42..edc9d27 100644 --- a/index.js +++ b/index.js @@ -1,5 +1,6 @@ const all = require('./all'); const andThen = require('./andThen'); +const any = require('./any'); const compose = require('./compose'); const filter = require('./filter'); const foldLeft = require('./foldLeft'); @@ -12,6 +13,7 @@ const zip = require('./zip'); module.exports = { all, andThen, + any, compose, filter, foldLeft, diff --git a/test/any.test.js b/test/any.test.js new file mode 100644 index 0000000..b850cda --- /dev/null +++ b/test/any.test.js @@ -0,0 +1,24 @@ +const assert = require('assert'); +const $ = require('../'); + +describe('any test', () => { + const array = [2, 4, 5, 8, 10]; + it('work with array', () => { + const result = $.any(array, (x) => x % 2 == 1); + assert.equal(result, true); + }); + it('work with Set', () => { + const set = new Set(array); + set.delete(5); + const result = $.any(set, (x) => x % 2 == 1); + assert.equal(result, false); + }); + it('work with Map', () => { + const map = new Map(); + for (let i = 3; i <= 9; i++) { + map.set(i, i * 2); + } + const result = $.any(map, (x) => x[0] % 2 == 1); + assert.deepEqual(result, true); + }); +});