summaryrefslogtreecommitdiff
path: root/lib/internal/keyIterator.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/internal/keyIterator.js')
-rw-r--r--lib/internal/keyIterator.js23
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/internal/keyIterator.js b/lib/internal/keyIterator.js
new file mode 100644
index 0000000..0e2b0c3
--- /dev/null
+++ b/lib/internal/keyIterator.js
@@ -0,0 +1,23 @@
+'use strict';
+
+import isArrayLike from 'lodash/isArrayLike';
+import keys from 'lodash/keys';
+
+export default function keyIterator(coll) {
+ var i = -1;
+ var len;
+ if (isArrayLike(coll)) {
+ len = coll.length;
+ return function next() {
+ i++;
+ return i < len ? i : null;
+ };
+ } else {
+ var okeys = keys(coll);
+ len = okeys.length;
+ return function next() {
+ i++;
+ return i < len ? okeys[i] : null;
+ };
+ }
+}