{"_id":"fast-loops","_rev":"3147579","name":"fast-loops","description":"Small, performant & immutable iteration utilities for Arrays and Objects","dist-tags":{"latest":"1.1.3"},"maintainers":[{"name":"rofrischmann","email":"robin@rofrischmann.de"}],"time":{"modified":"2023-11-27T07:20:49.000Z","created":"2017-11-26T21:36:22.379Z","1.1.3":"2020-10-02T12:29:33.100Z","1.1.2":"2019-11-19T13:14:11.978Z","1.1.1":"2019-09-13T09:34:47.059Z","1.1.0":"2019-09-13T09:32:37.582Z","1.0.1":"2018-06-29T21:52:04.441Z","1.0.0":"2017-11-26T21:36:22.379Z"},"users":{},"author":{"name":"robinweser","email":"contact@weser.io"},"repository":{"type":"git","url":"git+https://github.com/robinweser/fast-loops.git"},"versions":{"1.1.3":{"name":"fast-loops","version":"1.1.3","description":"Small, performant & immutable iteration utilities for Arrays and Objects","main":"lib/index.js","module":"es/index.js","jsnext:main":"es/index.js","sideEffects":false,"keywords":["fast loops","utility","minimal","small"],"repository":{"type":"git","url":"git+https://github.com/robinweser/fast-loops.git"},"author":{"name":"robinweser","email":"contact@weser.io"},"license":"MIT","scripts":{"build":"yarn run clean && yarn build:lib && yarn build:es","build:lib":"cross-env BABEL_ENV=commonjs babel modules --out-dir lib --ignore __tests__","build:es":"babel modules --out-dir es --ignore __tests__","clean":"rimraf es lib coverage","check":"yarn lint && yarn test:coverage","format":"prettier --write \"modules/**/*.js\"","lint":"eslint modules/**/*.js","release":"git pull --rebase && yarn run check && yarn build && npm publish","test":"cross-env BABEL_ENV=commonjs jest","test:coverage":"cross-env BABEL_ENV=commonjs jest --coverage","watch":"yarn test -- --watch"},"jest":{"rootDir":"modules"},"devDependencies":{"@babel/cli":"^7.2.0","@babel/core":"^7.2.2","@babel/preset-env":"^7.2.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^7.1.1","babel-jest":"^23.6.0","babel-plugin-transform-es2015-modules-commonjs":"^6.24.1","cross-env":"^5.2.0","eslint":"^3.14.1","eslint-config-airbnb":"^14.0.0","eslint-plugin-flowtype":"^2.30.0","eslint-plugin-import":"^2.2.0","eslint-plugin-jsx-a11y":"^3.0.2","eslint-plugin-react":"^6.9.0","jest":"^23.6.0","prettier":"^1.7.4","rimraf":"^2.6.1"},"gitHead":"4ddfea3ae7416477ef8d83e75a92c9e9ab6e6a28","bugs":{"url":"https://github.com/robinweser/fast-loops/issues"},"homepage":"https://github.com/robinweser/fast-loops#readme","_id":"fast-loops@1.1.3","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"shasum":"ce96adb86d07e7bf9b4822ab9c6fac9964981f75","size":17197,"noattachment":false,"key":"/fast-loops/-/fast-loops-1.1.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/fast-loops/download/fast-loops-1.1.3.tgz"},"maintainers":[{"name":"rofrischmann","email":"robin@rofrischmann.de"}],"_npmUser":{"name":"rofrischmann","email":"robin@weser.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fast-loops_1.1.3_1601641772966_0.9706460046625616"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2021-12-19T11:20:35.792Z","publish_time":1601641773100,"_cnpm_publish_time":1601641773100},"1.1.2":{"name":"fast-loops","version":"1.1.2","description":"Small, performant & immutable iteration utilities for Arrays and Objects","main":"lib/index.js","module":"es/index.js","jsnext:main":"es/index.js","sideEffects":false,"keywords":["fast loops","utility","minimal","small"],"repository":{"type":"git","url":"git+https://github.com/robinweser/fast-loops.git"},"author":{"name":"robinweser","email":"contact@weser.io"},"license":"MIT","scripts":{"build":"yarn run clean && yarn build:lib && yarn build:es","build:lib":"cross-env BABEL_ENV=commonjs babel modules --out-dir lib --ignore __tests__","build:es":"babel modules --out-dir es --ignore __tests__","clean":"rimraf es lib coverage","check":"yarn lint && yarn test:coverage","format":"prettier --write \"modules/**/*.js\"","lint":"eslint modules/**/*.js","release":"git pull --rebase && yarn run check && yarn build && npm publish","test":"cross-env BABEL_ENV=commonjs jest","test:coverage":"cross-env BABEL_ENV=commonjs jest --coverage","watch":"yarn test -- --watch"},"jest":{"rootDir":"modules"},"devDependencies":{"@babel/cli":"^7.2.0","@babel/core":"^7.2.2","@babel/preset-env":"^7.2.0","babel-core":"7.0.0-bridge.0","babel-eslint":"^7.1.1","babel-jest":"^23.6.0","babel-plugin-transform-es2015-modules-commonjs":"^6.24.1","cross-env":"^5.2.0","eslint":"^3.14.1","eslint-config-airbnb":"^14.0.0","eslint-plugin-flowtype":"^2.30.0","eslint-plugin-import":"^2.2.0","eslint-plugin-jsx-a11y":"^3.0.2","eslint-plugin-react":"^6.9.0","jest":"^23.6.0","prettier":"^1.7.4","rimraf":"^2.6.1"},"gitHead":"f6a16a384bd2320c1218e248fb849a21b613303d","bugs":{"url":"https://github.com/robinweser/fast-loops/issues"},"homepage":"https://github.com/robinweser/fast-loops#readme","_id":"fast-loops@1.1.2","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"shasum":"2ee75ba943a08a9b1ffdf9b49f133322c99bda68","size":27171,"noattachment":false,"key":"/fast-loops/-/fast-loops-1.1.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/fast-loops/download/fast-loops-1.1.2.tgz"},"maintainers":[{"name":"rofrischmann","email":"robin@rofrischmann.de"}],"_npmUser":{"name":"rofrischmann","email":"robin@weser.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fast-loops_1.1.2_1574169251795_0.6753351332866819"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2021-12-19T11:20:35.698Z","publish_time":1574169251978,"_cnpm_publish_time":1574169251978},"1.1.1":{"name":"fast-loops","version":"1.1.1","description":"Small, performant & immutable iteration utilities for Arrays and Objects","main":"lib/index.js","module":"es/index.js","jsnext:main":"es/index.js","repository":{"type":"git","url":"git+https://github.com/rofrischmann/fast-loops.git"},"keywords":["fast loops","utility","minimal","small"],"author":{"name":"Robin Frischmann"},"license":"MIT","scripts":{"build":"yarn run clean && yarn build:lib && yarn build:es","build:lib":"cross-env BABEL_ENV=commonjs babel modules --out-dir lib --ignore __tests__","build:es":"babel modules --out-dir es --ignore __tests__","clean":"rimraf es lib coverage","check":"yarn lint && yarn test:coverage && yarn flow","format":"prettier --write \"modules/**/*.js\"","flow":"flow","lint":"eslint modules/**/*.js","release":"git pull --rebase && yarn run check && yarn build && npm publish","test":"cross-env BABEL_ENV=commonjs jest","test:coverage":"cross-env BABEL_ENV=commonjs jest --coverage","watch":"yarn test -- --watch"},"jest":{"rootDir":"modules"},"devDependencies":{"babel-cli":"^6.24.1","babel-core":"^6.22.1","babel-eslint":"^7.1.1","babel-jest":"^18.0.0","babel-preset-es2015":"^6.22.0","babel-preset-flow":"^6.23.0","codeclimate-test-reporter":"^0.4.0","cross-env":"^5.0.1","eslint":"^3.14.1","eslint-config-airbnb":"^14.0.0","eslint-plugin-flowtype":"^2.30.0","eslint-plugin-import":"^2.2.0","eslint-plugin-jsx-a11y":"^3.0.2","eslint-plugin-react":"^6.9.0","flow-bin":"^0.38.0","jest":"^19.0.0","prettier":"^1.7.4","rimraf":"^2.6.1"},"gitHead":"134c2276b07ccdd6dc8c6ad66d20e3547982de0f","bugs":{"url":"https://github.com/rofrischmann/fast-loops/issues"},"homepage":"https://github.com/rofrischmann/fast-loops#readme","_id":"fast-loops@1.1.1","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"shasum":"4ada5dd07f8dcb2ff659fdc5bae2725f25c992b2","size":5491,"noattachment":false,"key":"/fast-loops/-/fast-loops-1.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/fast-loops/download/fast-loops-1.1.1.tgz"},"maintainers":[{"name":"rofrischmann","email":"robin@rofrischmann.de"}],"_npmUser":{"name":"rofrischmann","email":"robin@weser.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fast-loops_1.1.1_1568367286951_0.3923257261950315"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2021-12-19T11:20:35.601Z","publish_time":1568367287059,"_cnpm_publish_time":1568367287059},"1.1.0":{"name":"fast-loops","version":"1.1.0","description":"Small, performant & immutable iteration utilities for Arrays and Objects","main":"lib/index.js","module":"es/index.js","jsnext:main":"es/index.js","repository":{"type":"git","url":"git+https://github.com/rofrischmann/fast-loops.git"},"keywords":["fast loops","utility","minimal","small"],"author":{"name":"Robin Frischmann"},"license":"MIT","scripts":{"build":"yarn run clean && yarn build:lib && yarn build:es","build:lib":"cross-env BABEL_ENV=commonjs babel modules --out-dir lib --ignore __tests__","build:es":"babel modules --out-dir es --ignore __tests__","clean":"rimraf es lib coverage","check":"yarn lint && yarn test:coverage && yarn flow","format":"prettier --write \"modules/**/*.js\"","flow":"flow","lint":"eslint modules/**/*.js","release":"git pull --rebase && yarn run check && yarn build && npm publish","test":"cross-env BABEL_ENV=commonjs jest","test:coverage":"cross-env BABEL_ENV=commonjs jest --coverage","watch":"yarn test -- --watch"},"jest":{"rootDir":"modules"},"devDependencies":{"babel-cli":"^6.24.1","babel-core":"^6.22.1","babel-eslint":"^7.1.1","babel-jest":"^18.0.0","babel-preset-es2015":"^6.22.0","babel-preset-flow":"^6.23.0","codeclimate-test-reporter":"^0.4.0","cross-env":"^5.0.1","eslint":"^3.14.1","eslint-config-airbnb":"^14.0.0","eslint-plugin-flowtype":"^2.30.0","eslint-plugin-import":"^2.2.0","eslint-plugin-jsx-a11y":"^3.0.2","eslint-plugin-react":"^6.9.0","flow-bin":"^0.38.0","jest":"^19.0.0","prettier":"^1.7.4","rimraf":"^2.6.1"},"gitHead":"2ea3456e8cefeb146ca2085bd2ed9c75a73bcae8","bugs":{"url":"https://github.com/rofrischmann/fast-loops/issues"},"homepage":"https://github.com/rofrischmann/fast-loops#readme","_id":"fast-loops@1.1.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"shasum":"a8ce749d10b1d83ca4ae4bc8d75339bdb64eafac","size":5388,"noattachment":false,"key":"/fast-loops/-/fast-loops-1.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/fast-loops/download/fast-loops-1.1.0.tgz"},"maintainers":[{"name":"rofrischmann","email":"robin@rofrischmann.de"}],"_npmUser":{"name":"rofrischmann","email":"robin@weser.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fast-loops_1.1.0_1568367157442_0.9389555843105444"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2021-12-19T11:20:34.707Z","publish_time":1568367157582,"_cnpm_publish_time":1568367157582},"1.0.1":{"name":"fast-loops","version":"1.0.1","description":"Small, performant & immutable iteration utilities for Arrays and Objects","main":"lib/index.js","module":"es/index.js","jsnext:main":"es/index.js","files":["LICENSE","README.md","lib/**","es/**"],"repository":{"type":"git","url":"git+https://github.com/rofrischmann/fast-loops.git"},"keywords":["fast loops","utility","minimal","small"],"author":{"name":"Robin Frischmann"},"license":"MIT","scripts":{"build":"yarn run clean && yarn build:lib && yarn build:es","build:lib":"cross-env BABEL_ENV=commonjs babel modules --out-dir lib --ignore __tests__","build:es":"babel modules --out-dir es --ignore __tests__","clean":"rimraf es lib coverage","check":"yarn lint && yarn test:coverage && yarn flow","format":"prettier --write \"modules/**/*.js\"","flow":"flow","lint":"eslint modules/**/*.js","release":"git pull --rebase && yarn run check && yarn build && npm publish","test":"cross-env BABEL_ENV=commonjs jest","test:coverage":"cross-env BABEL_ENV=commonjs jest --coverage","watch":"yarn test -- --watch"},"jest":{"rootDir":"modules"},"devDependencies":{"babel-cli":"^6.24.1","babel-core":"^6.22.1","babel-eslint":"^7.1.1","babel-jest":"^18.0.0","babel-preset-es2015":"^6.22.0","babel-preset-flow":"^6.23.0","codeclimate-test-reporter":"^0.4.0","cross-env":"^5.0.1","eslint":"^3.14.1","eslint-config-airbnb":"^14.0.0","eslint-plugin-flowtype":"^2.30.0","eslint-plugin-import":"^2.2.0","eslint-plugin-jsx-a11y":"^3.0.2","eslint-plugin-react":"^6.9.0","flow-bin":"^0.38.0","jest":"^19.0.0","prettier":"^1.7.4","rimraf":"^2.6.1"},"gitHead":"c9e9e2103d8d7dfe0fab17c1e36b41b54c0da541","bugs":{"url":"https://github.com/rofrischmann/fast-loops/issues"},"homepage":"https://github.com/rofrischmann/fast-loops#readme","_id":"fast-loops@1.0.1","_npmVersion":"5.6.0","_nodeVersion":"8.0.0","_npmUser":{"name":"rofrischmann","email":"robin@rofrischmann.de"},"dist":{"shasum":"a3d33e71654a7e6e67d7c2de0fee4ea11c6f2526","size":4553,"noattachment":false,"key":"/fast-loops/-/fast-loops-1.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/fast-loops/download/fast-loops-1.0.1.tgz"},"maintainers":[{"name":"rofrischmann","email":"robin@rofrischmann.de"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fast-loops_1.0.1_1530309124345_0.15140493848494407"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2021-12-19T11:20:33.834Z","publish_time":1530309124441,"_cnpm_publish_time":1530309124441},"1.0.0":{"name":"fast-loops","version":"1.0.0","description":"A collection of small, high-performant & immutable iteration utilities for Arrays and Objects","main":"lib/index.js","module":"es/index.js","jsnext:main":"es/index.js","files":["LICENSE","README.md","lib/**","es/**"],"repository":{"type":"git","url":"git+https://github.com/rofrischmann/fast-loops.git"},"keywords":["fast loops","utility","minimal","small"],"author":{"name":"Robin Frischmann"},"license":"MIT","scripts":{"build":"yarn run clean && yarn build:lib && yarn build:es","build:lib":"cross-env BABEL_ENV=commonjs babel modules --out-dir lib --ignore __tests__","build:es":"babel modules --out-dir es --ignore __tests__","clean":"rimraf es lib coverage","check":"yarn lint && yarn test:coverage && yarn flow","format":"prettier --write \"modules/**/*.js\"","flow":"flow","lint":"eslint modules/**/*.js","release":"git pull --rebase && yarn run check && yarn build && npm publish","test":"cross-env BABEL_ENV=commonjs jest","test:coverage":"cross-env BABEL_ENV=commonjs jest --coverage","watch":"yarn test -- --watch"},"jest":{"rootDir":"modules"},"devDependencies":{"babel-cli":"^6.24.1","babel-core":"^6.22.1","babel-eslint":"^7.1.1","babel-jest":"^18.0.0","babel-preset-es2015":"^6.22.0","babel-preset-flow":"^6.23.0","codeclimate-test-reporter":"^0.4.0","cross-env":"^5.0.1","eslint":"^3.14.1","eslint-config-airbnb":"^14.0.0","eslint-plugin-flowtype":"^2.30.0","eslint-plugin-import":"^2.2.0","eslint-plugin-jsx-a11y":"^3.0.2","eslint-plugin-react":"^6.9.0","flow-bin":"^0.38.0","jest":"^19.0.0","prettier":"^1.7.4","rimraf":"^2.6.1"},"gitHead":"f504ef596632ba9c36fb04363630d1b21d0b5985","bugs":{"url":"https://github.com/rofrischmann/fast-loops/issues"},"homepage":"https://github.com/rofrischmann/fast-loops#readme","_id":"fast-loops@1.0.0","_npmVersion":"5.0.0","_nodeVersion":"8.0.0","_npmUser":{"name":"rofrischmann","email":"robin@rofrischmann.de"},"dist":{"shasum":"2cdd7e0ff67343b2b5f5e627d855a50b4bed559a","size":3230,"noattachment":false,"key":"/fast-loops/-/fast-loops-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/fast-loops/download/fast-loops-1.0.0.tgz"},"maintainers":[{"name":"rofrischmann","email":"robin@rofrischmann.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fast-loops-1.0.0.tgz_1511732181510_0.9526847745291889"},"directories":{},"_cnpmcore_publish_time":"2021-12-19T11:20:32.972Z","publish_time":1511732182379,"_cnpm_publish_time":1511732182379}},"readme":"# Fast Loops\n\nA collection of small, performant & immutable iteration utilities for Arrays and Objects.\n\n<img alt=\"TravisCI\" src=\"https://travis-ci.org/rofrischmann/fast-loops.svg?branch=master\"> <a href=\"https://codeclimate.com/github/rofrischmann/fast-loops/coverage\"><img alt=\"Test Coverage\" src=\"https://codeclimate.com/github/rofrischmann/fast-loops/badges/coverage.svg\"></a> <img alt=\"gzipped size\" src=\"https://img.shields.io/badge/gzipped+minified-0.47kb-brightgreen.svg\"> <img alt=\"npm downloads\" src=\"https://img.shields.io/npm/dm/fast-loops.svg\"> <img alt=\"npm version\" src=\"https://badge.fury.io/js/fast-loops.svg\">\n\n## Installation\n```sh\nyarn add fast-loops\n```\nAlternatively use `npm i --save fast-loops`.\n\n## Why?\nBecause JavaScript's native \"functional\" APIs such as `forEach`, `reduce`, `map` and `filter` are slow. There're many different utility packages out there already, e.g. lodash. But lodash's `reduce` method itself is 4.5kb gzipped which is way too much for a simple Array/Object reduce utility.\n\n## API\n\n> All methods are immutable by defaults, yet they're not safe from mutating.\n\n* [arrayEach](#arrayeacharr-iterator)\n* [arrayFilter](#arrayfilterarr-filter)\n* [arrayMap](#arraymaparr-mapper)\n* [arrayReduce](#arrayreducearr-reducer-accumulator)\n* [objectEach](#objecteachobj-iterator)\n* [objectFilter](#objectfilterobj-filter)\n* [objectFind](#objectfindobj-query)\n* [objectMap](#objectmapobj-mapper)\n* [objectReduce](#objectreduceobj-reducer-accumulator)\n* [objectRenameKeys](#objectrenamekeysobj-keys)\n* [objectMergeDeep](#objectmergedeepbase-objs)\n\n### `arrayEach(arr, iterator)`\n\nIterates over each value in the array.<br>\nSimilar to `Array.prototype.forEach`.\n\n1. `arr` (*Array*): The array to iterate over\n2. `iterator` (*Function*): The iterator method with the signature `(value, index, length, arr) => void`\n\n```javascript\nimport { arrayEach } from 'fast-loops'\n\narrayEach([1, 2, 3], console.log)\n// 1, 0, 3, [1, 2, 3]\n// 2, 1, 3, [1, 2, 3]\n// 3, 2, 3, [1, 2, 3]\n```\n\n\n### `arrayFilter(arr, filter)`\n\nFilters an array according to the filter criteria.<br>\nSimilar to `Array.prototype.filter`.\n\n1. `arr` (*Array*): The array that gets filtered\n2. `filter` (*Function*): The filter method with the signature `(value, index, length, arr) => boolean`\n\n```javascript\nimport { arrayFilter } from 'fast-loops'\n\nconst biggerThan2 = arrayFilter([1, 2, 3, 4], value => value > 2)\n\nconsole.log(biggerThan2)\n// => [3, 4]\n```\n\n### `arrayMap(arr, mapper)`\n\nMaps an array by running the mapper on each value.<br>\nSimilar to `Array.prototype.map`.\n\n1. `arr` (*Array*): The array that gets mapped\n2. `mapper` (*Function*): The mapping method with the signature `(value, index, length, arr) => newValue`\n\n```javascript\nimport { arrayMap } from 'fast-loops'\n\nconst square = arrayMap([1, 2, 3, 4], value => value * value)\n\nconsole.log(square)\n// => [1, 4, 9, 16]\n```\n\n### `arrayReduce(arr, reducer, accumulator)`\n\nReduces an array based on the accumulator.<br>\nSimilar to `Array.prototype.reduce`.\n\n1. `arr` (*Array*): The array that gets reduced\n2. `reducer` (*Function*): The reducer method with the signature `(accumulator, value, index, length, arr) => accumulator`\n3. `accumulator` (*any*): The initial accumulator value\n\n```javascript\nimport { arrayReduce } from 'fast-loops'\n\nconst sum = arrayReduce([1, 2, 3, 4], (out, value) => out + value, 0)\n\nconsole.log(sum)\n// => 10\n```\n\n### `objectEach(obj, iterator)`\n\nIterates over each key in the object.\n\n1. `obj` (*Object*): The object to iterate over\n2. `iterator` (*Function*): The iterator method with the signature `(value, key, obj) => void`\n\n```javascript\nimport { objectEach } from 'fast-loops'\n\nobjectEach({ 1: 10, 2: 20, 3: 30 }, console.log)\n// 10, 1, { 1: 10, 2: 20, 3: 30 }\n// 20, 2, { 1: 10, 2: 20, 3: 30 }\n// 30, 3, { 1: 10, 2: 20, 3: 30 }\n```\n\n### `objectFilter(obj, filter)`\n\nFilters an object's keys according to the filter criteria.\n\n1. `obj` (*Object*): The object that gets filtered\n2. `filter` (*Function*): The filter method with the signature `(value, key, obj) => boolean`\n\n```javascript\nimport { objectFilter } from 'fast-loops'\n\nconst filter = (value, key) => value > 20 && parseInt(key) % 2 !== 0\nconst biggerThan20AndOddKey = objectFilter({ 1: 10, 2: 20, 3: 30, 4: 40 }, filter)\n\nconsole.log(biggerThan20AndOddKey)\n// => { 3: 30 }\n```\n\n### `objectFind(obj, query)`\n\nTries to find a key-value pair that matches the query.<br>\nReturns the matching key or `undefined` if none matches.<br>\nIt's like `Array.prototype.find` but for objects.\n\n1. `obj` (*Object*): The object that gets queried\n2. `query` (*Function*): The query method with the signature `(value, key, obj) => boolean`\n\n```javascript\nimport { objectFind } from 'fast-loops'\n\nconst query = (value, key) => value > 20 && parseInt(key) % 2 === 0\nconst biggerThan20AndEvenKey = objectFind({ 1: 10, 2: 20, 3: 30, 4: 40 }, query)\n\nconsole.log(biggerThan20AndEvenKey)\n// => \"4\"\n```\n\n\n### `objectMap(obj, mapper)`\n\nMaps an object by running the `mapper` on each value.<br>\nSimilar to `Object.keys(obj).map(mapper)`.\n\n\n1. `obj` (*Object*): The object that gets reduced\n2. `mapper` (*Function*): The mapper method with the signature `(value, key, obj) => newValue`\n\n```javascript\nimport { objectMap } from 'fast-loops'\n\nconst mapped = objectMap({ 1: 10, 2: 20, 3: 30 }, (value, key) => value + parseInt(key))\n\nconsole.log(mapped)\n// => { 1: 11, 2: 22, 3: 33 }\n```\n\n### `objectReduce(obj, reducer, accumulator)`\n\nReduces an object based on the accumulator.\n\n1. `obj` (*Object*): The object that gets reduced\n2. `reducer` (*Function*): The reducer method with the signature `(accumulator, value, key, obj) => accumulator`\n3. `accumulator` (*any*): The initial accumulator value\n\n```javascript\nimport { objectReduce } from 'fast-loops'\n\nconst sumOfValues = objectReduce({ 1: 10, 2: 20, 3: 30 }, (out, value) => out + value, 0)\n\nconsole.log(sumOfValues)\n// => 60\n```\n\n### `objectRenameKeys(obj, keys)`\n\nRenames object keys.\n\n> Uses [objectReduce](#objectreduceobj-reducer-accumulator) under the hood.\n\n1. `obj` (*Object*): The object that gets reduced\n2. `keys` (*Object*): The keys mapping an old key to a new key\n\n```javascript\nimport { objectRenameKeys } from 'fast-loops'\n\nconst renamedObj = objectRenameKeys({ foo: 1, bar: 2 }, { foo: \"baz\" })\n\nconsole.log(sumOfValues)\n// => { baz: 1, bar: 2 }\n```\n\n\n### `objectMergeDeep(base, ...objs)`\n\nRecursively merges objects into a base object.\n\n1. `base` (*Object*): The base object which is changed\n2. `objs` (*Array\\<Object\\>*): A list of objects to be merged into the base object\n\n```javascript\nimport { objectMergeDeep } from 'fast-loops'\n\nconst base = {\n  foo: 1,\n  bar: {\n    foo: 2\n  }\n}\nconst mergedObj = objectMergeDeep(base, { baz: 3 }, { bar: { foo: 3 }})\n\nconsole.log(mergedObj)\n// => { foo: 1, bar: { foo: 3 }, baz: 3 }\n```\n\n## Direct Imports\nWhile we support the `module` key to support Tree Shaking, you might still want to import single methods without any overhead.\nYou can import every method using the full path to the method resource.\n\n```javascript\nimport objectReduce from 'fast-loops/lib/objectReduce'\n```\n\n## License\nfast-loops is licensed under the [MIT License](http://opensource.org/licenses/MIT).<br>\nDocumentation is licensed under [Creative Common License](http://creativecommons.org/licenses/by/4.0/).<br>\nCreated with ♥ by [@rofrischmann](http://rofrischmann.de).\n","_attachments":{},"homepage":"https://github.com/robinweser/fast-loops#readme","bugs":{"url":"https://github.com/robinweser/fast-loops/issues"},"license":"MIT"}