From 8be26ac755af4307672e277447d82b53b4295d63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Lipi=C5=84ski?= Date: Mon, 27 Mar 2017 22:58:39 +0200 Subject: [PATCH] Implement `baseEach` and `baseEachRight` since `createBaseFor` is gone. --- .internal/baseFor.js | 17 ++++++++++++++--- .internal/baseForRight.js | 16 +++++++++++++--- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/.internal/baseFor.js b/.internal/baseFor.js index 4a9d98fb2..42db6db8e 100644 --- a/.internal/baseFor.js +++ b/.internal/baseFor.js @@ -1,5 +1,3 @@ -import createBaseFor from './createBaseFor.js' - /** * The base implementation of `baseForOwn` which iterates over `object` * properties returned by `keysFunc` and invokes `iteratee` for each property. @@ -11,6 +9,19 @@ import createBaseFor from './createBaseFor.js' * @param {Function} keysFunc The function to get the keys of `object`. * @returns {Object} Returns `object`. */ -const baseFor = createBaseFor() +function baseFor(object, iteratee, keysFunc) { + const iterable = Object(object) + const props = keysFunc(object) + let { length } = props; + let index = -1; + + while (length--) { + const key = props[++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object +} export default baseFor diff --git a/.internal/baseForRight.js b/.internal/baseForRight.js index 1defce199..1e6599656 100644 --- a/.internal/baseForRight.js +++ b/.internal/baseForRight.js @@ -1,5 +1,3 @@ -import createBaseFor from './createBaseFor.js' - /** * This function is like `baseFor` except that it iterates over properties * in the opposite order. @@ -10,6 +8,18 @@ import createBaseFor from './createBaseFor.js' * @param {Function} keysFunc The function to get the keys of `object`. * @returns {Object} Returns `object`. */ -const baseForRight = createBaseFor(true) +function baseForRight(object, iteratee, keysFunc) { + const iterable = Object(object) + const props = keysFunc(object) + let { length } = props; + + while (length--) { + const key = props[length]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object +} export default baseForRight