{"_id":"@edgarszagorskis/recursively","_rev":"5-2c415947defe7a7cf80c6233fb3ff4ab","name":"@edgarszagorskis/recursively","description":"Recursively run callback function on each item in an array","dist-tags":{"latest":"1.1.2"},"versions":{"1.0.0":{"name":"@edgarszagorskis/recursively","version":"1.0.0","description":"Recursively run callback function on each item in an array or property in an object","main":"index.js","scripts":{"test":"mocha --reporter spec"},"repository":{"type":"git","url":"git+https://github.com/EdgarsZagorskis/recursively.git"},"keywords":["recursive","function","array","object"],"author":{"name":"Edgars Zagorskis"},"license":"MIT","bugs":{"url":"https://github.com/EdgarsZagorskis/recursively/issues"},"homepage":"https://github.com/EdgarsZagorskis/recursively#readme","engines":{"node":">=4.2.4"},"devDependencies":{"chai":"^3.5.0","mocha":"^3.3.0"},"gitHead":"c9c30bef99b54e20e9ef86d75e3cbe67d823d272","_id":"@edgarszagorskis/recursively@1.0.0","_shasum":"0f9910e1cd048dcfaa4fd37c34ff55805a6ba678","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.1","_npmUser":{"name":"edgarszagorskis","email":"edgars.zagorskis@gmail.com"},"dist":{"shasum":"0f9910e1cd048dcfaa4fd37c34ff55805a6ba678","tarball":"https://registry.npmjs.org/@edgarszagorskis/recursively/-/recursively-1.0.0.tgz","integrity":"sha512-RzsybdaWgQOQJ8MUKlYpfdSl+EJXAEyCqfGKpVsWhD5+yuklW2HwBwxo2aGPoQGgAzEHLDY146MrUPoxd1DQ9w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCMdKDUPRc9lW2Z9IfouC1gGWlXBD1CjNKbnosXIYH1pwIhANIIGhslqnQand14yDB4S7H+JXCroegFVppafYLanrm/"}]},"maintainers":[{"name":"edgarszagorskis","email":"edgars.zagorskis@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/recursively-1.0.0.tgz_1494444420868_0.4885955541394651"}},"1.1.0":{"name":"@edgarszagorskis/recursively","version":"1.1.0","description":"Recursively run callback function on each item in an array","main":"index.js","scripts":{"test":"mocha --reporter spec","cover":"node_modules/istanbul/lib/cli.js cover node_modules/mocha/bin/_mocha -- -R spec test/*"},"repository":{"type":"git","url":"git+https://github.com/EdgarsZagorskis/recursively.git"},"keywords":["recursive","function","array","object"],"author":{"name":"Edgars Zagorskis"},"license":"MIT","bugs":{"url":"https://github.com/EdgarsZagorskis/recursively/issues"},"homepage":"https://github.com/EdgarsZagorskis/recursively#readme","engines":{"node":">=4.2.4"},"devDependencies":{"chai":"^3.5.0","coveralls":"^2.13.1","istanbul":"^0.4.5","mocha":"^3.3.0"},"gitHead":"fbbb6c6f090f63a585893ef6d51e6af467a391fe","_id":"@edgarszagorskis/recursively@1.1.0","_shasum":"5ce0f72fcabd960653022188b30ecd726f941af0","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.1","_npmUser":{"name":"edgarszagorskis","email":"edgars.zagorskis@gmail.com"},"dist":{"shasum":"5ce0f72fcabd960653022188b30ecd726f941af0","tarball":"https://registry.npmjs.org/@edgarszagorskis/recursively/-/recursively-1.1.0.tgz","integrity":"sha512-1fp2pvuddM29lfr4P/diLXOsb7fSdvPLneYxIHKoZL3mzKOm8QYwJUfzMNp908ieKGtoWa1vECQdVR5huhPJng==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDp15k5H3Qbq/wj2j+CZQWhtglmoyfSwdL9j+mfki3mHAIhAJKPYjmBo0X4+OQ99jeeVktFNn9ivPNAH4Dlx3ieBo1M"}]},"maintainers":[{"name":"edgarszagorskis","email":"edgars.zagorskis@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/recursively-1.1.0.tgz_1494498472017_0.9060342872980982"}},"1.1.1":{"name":"@edgarszagorskis/recursively","version":"1.1.1","description":"Recursively run callback function on each item in an array","main":"index.js","scripts":{"test":"mocha --reporter spec","cover":"node_modules/istanbul/lib/cli.js cover node_modules/mocha/bin/_mocha -- -R spec test/*"},"repository":{"type":"git","url":"git+https://github.com/EdgarsZagorskis/recursively.git"},"keywords":["recursive","function","array","object"],"author":{"name":"Edgars Zagorskis"},"license":"MIT","bugs":{"url":"https://github.com/EdgarsZagorskis/recursively/issues"},"homepage":"https://github.com/EdgarsZagorskis/recursively#readme","engines":{"node":">=4.2.4"},"devDependencies":{"chai":"^3.5.0","coveralls":"^2.13.1","istanbul":"^0.4.5","mocha":"^3.3.0"},"gitHead":"120d7f5748092ef9cfb5d82617d78ef41661c07c","_id":"@edgarszagorskis/recursively@1.1.1","_shasum":"791caf37a7659cf060ed0acc020ace94badb3592","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.1","_npmUser":{"name":"edgarszagorskis","email":"edgars.zagorskis@gmail.com"},"dist":{"shasum":"791caf37a7659cf060ed0acc020ace94badb3592","tarball":"https://registry.npmjs.org/@edgarszagorskis/recursively/-/recursively-1.1.1.tgz","integrity":"sha512-4ySM9yoDHzJx0weKHm78yLeedTWbyUumXKIPLcQyAYvhPfzLSu8dARZ6awFS4W7V3/gYa13aTI1A+fg6ez0dcA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBN7nKyoyUToXWvdujOWaF2VwC7Sg0+fN8jUh/97wJOMAiEA/9LFkCcXHwqQ5O1Joiux1aESg70O8tm7wb7inIXM7zA="}]},"maintainers":[{"name":"edgarszagorskis","email":"edgars.zagorskis@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/recursively-1.1.1.tgz_1494498627015_0.2832854767329991"}},"1.1.2":{"name":"@edgarszagorskis/recursively","version":"1.1.2","description":"Recursively run callback function on each item in an array","main":"index.js","scripts":{"test":"mocha --reporter spec","cover":"node_modules/istanbul/lib/cli.js cover node_modules/mocha/bin/_mocha -- -R spec test/*"},"repository":{"type":"git","url":"git+https://github.com/EdgarsZagorskis/recursively.git"},"keywords":["recursive","function","array","object"],"author":{"name":"Edgars Zagorskis"},"license":"MIT","bugs":{"url":"https://github.com/EdgarsZagorskis/recursively/issues"},"homepage":"https://github.com/EdgarsZagorskis/recursively#readme","engines":{"node":">=4.2.4"},"devDependencies":{"chai":"^3.5.0","coveralls":"^2.13.1","istanbul":"^0.4.5","mocha":"^3.3.0"},"gitHead":"1fb03223210cca614da9970ead944daa0d186975","_id":"@edgarszagorskis/recursively@1.1.2","_shasum":"76c4437ad261d4b16d197b8755475266443bfeac","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.1","_npmUser":{"name":"edgarszagorskis","email":"edgars.zagorskis@gmail.com"},"dist":{"shasum":"76c4437ad261d4b16d197b8755475266443bfeac","tarball":"https://registry.npmjs.org/@edgarszagorskis/recursively/-/recursively-1.1.2.tgz","integrity":"sha512-UeP6t5S8FYWVn4z976g83KBAPTFfBg/BwB85IkCyFcFcml/Zu85btIOjeaRnuRJyBji4WhanfD+8w/oslIvCug==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHDZ2FSCQbJSDrfOrbkRtHzuB40EMpc19Urh2rpC04aFAiAlrmmJbMJHW892V5YA6O5ZCAc+RluI/0VztplYKULFgw=="}]},"maintainers":[{"name":"edgarszagorskis","email":"edgars.zagorskis@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/recursively-1.1.2.tgz_1494499323871_0.434224606025964"}}},"readme":"Recursively JavaScript\n==========\n\n[![Build Status](https://travis-ci.org/EdgarsZagorskis/recursively.svg?branch=master)](https://travis-ci.org/EdgarsZagorskis/recursively) [![Coverage Status](https://coveralls.io/repos/github/EdgarsZagorskis/recursively/badge.svg)](https://coveralls.io/github/EdgarsZagorskis/recursively)\n\nRecursively run JavaScript callback function on each item in an array.\n\nRecursion happens if the item is also an array - for example, as in 2D arrays.\n\nOther example for a recursion are arrays of objects with nested objects - for example a menu with submenus.\n\n## Installation\n \n    npm install @edgarszagorskis/recursively -S\n    \n## Usage    \n   \n    var recursively = require('@edgarszagorskis/recursively');\n    \n    \n    /**\n     * Recursively run callback on items in a Javascript array\n     * @param arr               An array that can be iterated\n     * @param callback          Callback will receive following arguments:\n     *                          item = value or item in the collection\n     *                          index = index in array\n     *                          arr = original array. So one can change the original value if needed\n     * @param childProperty     Optional child property. If iterated item is an object, recursion will dive into this property\n     * @return void | any       If callback returns a value, it is rewriting the value in array or else it is left intact\n     */\n    recursively(input: array, callback: (item?:any, callback?:number, childProperty?:array) => void|any)\n    \n### Example 1 - populating 3x3 array with incremental integers from 1 to 9\n\n    var recursively = require('@edgarszagorskis/recursively');\n    \n    var data = [new Array(3).fill(), new Array(3).fill(), new Array(3).fill()];\n    var i = 1;\n    recursively(data, function () {\n        return i++;\n    }           \n    \n    // data will be [[1, 2, 3], [4, 5, 6], [7, 8, 9]];\n        \n### Example 2 - populate array of 9 items with fibonacci numbers by referring to the previous item in collection\n\n    var recursively = require('@edgarszagorskis/recursively');\n    \n    var data = new Array(9).fill();\n    recursively(data, function (item, index, collection) {\n        if (index === 0) {\n            return 0;\n        } else if (index === 1) {\n            return 1;\n        } else {\n            return collection[index - 2] + collection[index - 1];\n        }\n    });          \n    \n    // data will be [[1, 2, 3], [4, 5, 6], [7, 8, 9]];\n    \n### Example 3 - enabling all objects in flat array\n\n    var recursively = require('@edgarszagorskis/recursively');\n    \n    var data = [{enabled: false}, {enabled: false}];\n    recursively(data, function(item){\n        item.enabled = true;\n    });\n    \n    // data will be [{enabled: true}, {enabled: true}];\n        \n### Example 4 - enabling first child of each submenu\n\n    var recursively = require('@edgarszagorskis/recursively');\n    \n    var menu = [{\n        title: 'Level 1',\n        enabled: false,\n        submenu: [\n            {\n                title: 'Level2 a',\n                enabled: false,\n                submenu: [\n                    {\n                        title: 'Level3 aa',\n                        enabled: false\n                    },\n                    {\n                        title: 'Level3 ab',\n                        enabled: false\n                    }]\n            }, {\n                title: 'Level2 b',\n                enabled: false,\n                submenu: [\n                    {\n                        title: 'Level2 ba',\n                        enabled: false\n                    },\n                    {\n                        title: 'Level2 bb',\n                        enabled: false\n                    }]\n            }]\n    }];\n    \n    function enableFirstChild(item, index) {\n        if (index === 0) {\n            item.enabled = true;\n        }\n    }\n\n    recursively(menu, enableFirstChild, 'submenu');\n    \n    // menu[0].enabled==true;\n    // menu[0].submenu[0].enabled==true;\n    // menu[0].submenu[0].submenu[0].enabled==true;\n    // menu[0].submenu[1].submenu[0].enabled==true;\n\n    \n## Test\n\n    npm test\n    \n## Contributions\n\nwelcomed.... Just make a test.","maintainers":[{"name":"edgarszagorskis","email":"edgars.zagorskis@gmail.com"}],"time":{"modified":"2022-06-12T17:28:19.445Z","created":"2017-05-10T19:27:01.479Z","1.0.0":"2017-05-10T19:27:01.479Z","1.1.0":"2017-05-11T10:27:53.354Z","1.1.1":"2017-05-11T10:30:28.839Z","1.1.2":"2017-05-11T10:42:05.621Z"},"homepage":"https://github.com/EdgarsZagorskis/recursively#readme","keywords":["recursive","function","array","object"],"repository":{"type":"git","url":"git+https://github.com/EdgarsZagorskis/recursively.git"},"author":{"name":"Edgars Zagorskis"},"bugs":{"url":"https://github.com/EdgarsZagorskis/recursively/issues"},"license":"MIT","readmeFilename":"README.md"}