{"id":17216346,"url":"https://github.com/ganeshkbhat/jsextenders","last_synced_at":"2026-04-30T17:31:52.739Z","repository":{"id":65700232,"uuid":"597648373","full_name":"ganeshkbhat/jsextenders","owner":"ganeshkbhat","description":"Array, Object, String, Function, Create Decorators extension Utils like for Python and more for Node.js","archived":false,"fork":false,"pushed_at":"2024-03-17T07:04:40.000Z","size":555,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-02T17:43:43.781Z","etag":null,"topics":["array","decorator","decorator-pattern","extenders","javascript","math","number","object","object-extensions","python","string"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ganeshkbhat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-02-05T07:28:51.000Z","updated_at":"2024-01-06T09:14:29.000Z","dependencies_parsed_at":"2024-01-07T04:24:12.310Z","dependency_job_id":"9623fd9c-9e3a-459b-988b-773fca36fbc8","html_url":"https://github.com/ganeshkbhat/jsextenders","commit_stats":{"total_commits":248,"total_committers":2,"mean_commits":124.0,"dds":"0.0040322580645161255","last_synced_commit":"50c9eba6102733401dfacec32017d8217e8a61ac"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/ganeshkbhat/jsextenders","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ganeshkbhat%2Fjsextenders","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ganeshkbhat%2Fjsextenders/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ganeshkbhat%2Fjsextenders/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ganeshkbhat%2Fjsextenders/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ganeshkbhat","download_url":"https://codeload.github.com/ganeshkbhat/jsextenders/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ganeshkbhat%2Fjsextenders/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32472396,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"ssl_error","status_checked_at":"2026-04-30T13:12:06.837Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["array","decorator","decorator-pattern","extenders","javascript","math","number","object","object-extensions","python","string"],"created_at":"2024-10-15T03:27:33.299Z","updated_at":"2026-04-30T17:31:52.724Z","avatar_url":"https://github.com/ganeshkbhat.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# extenders\n\nNode module for Array, Object, String, Decorator, extention Utils like for Python and more for Node.js\n\nFind the demos in the [demos folder](./demos)\n\n#### USAGE\n\n###### JS\n\n```\nvar ArrayExtended = require(\"extenders\").ArrayExtended;\n\nlet arr = ArrayExtended([1,2,3,4,5,6]);\nconsole.log(arr);\narr.clear();\nconsole.log(arr);\n```\n\n###### CJS\n\n```\nvar ArrayExtended = import(\"extenders\").ArrayExtended;\n\nlet arr = ArrayExtended([1,2,3,4,5,6]);\nconsole.log(arr);\narr.clear();\nconsole.log(arr);\n```\n\n###### ESM\n\n```\nimport ArrayExtended from \"extenders\";\n\nlet arr = ArrayExtended([1,2,3,4,5,6]);\nconsole.log(arr);\narr.clear();\nconsole.log(arr);\n```\n\n### Different modules and functions\n\n- [Array](#array)\n- [Object](#object)\n- [String](#string)\n- [Numbers](#numbers)\n- [Math](#math)\n- [Utils](#utils)\n- [Decorators](#decorators)\n- [Singleton](#singleton)\n- [Extenders](#extenders)\n- [Numpyjs](#numpyjs)\n- [Pandas](#pandas)\n\n\u003ca name=\"array\"\u003e\u003c/a\u003e\n\n### Array Prototype extended functions\n\nThe extenders library's array extended functions tries to add many common use cases of array modifiers and functions missing or used constantly in projects. This library tries to provide/ incorporate all (or atleast most) 1. python list/ tuple functions 2. common use cases of Math, and other array like functions 3. \\_ (underscore) functions missing from python list, tuple, common functions\n\n```\nvar extendArray = require(\"extenders\").extendArray;\nextendArray();\n\nlet arr = [1,2,3,4,5,6];\nconsole.log(arr);\narr.clear();\nconsole.log(arr);\n```\n\n```\nvar ArrayExtended = require(\"extenders\").ArrayExtended;\n\nlet arr = ArrayExtended([1,2,3,4,5,6]);\nconsole.log(arr);\narr.clear();\nconsole.log(arr);\n```\n\n```\nvar extendArray = require(\"extenders\").extendArray;\nextendArray();\n\n// Below find the usage of the extended functions\n\n```\n\n#### Array - API List\n\n###### .execute\n\nExecute the function provided that takes the iterator as an argument of the function.\n\n`[1, 2, 3, 4].execute(executeFunction)`\n\n###### .extend\n\nExtend or Concat the provided iterable at provided `index`. The default is last index of the array.\n\n`[1, 2, 3, 4].extend(iterable, index)`\n\n###### .max\n\nReturns the provided number (count) of maximum values in the array from `start` index to `end` index.\n\n`[1, 2, 3, 4].max(count, start, end)`\n\n###### .maxIndexes\n\nReturns the provided number (count) of maximum values with their indexes in the array from `start` index to `end` index.\n\n`[1, 2, 3, 4].maxIndexes(count, start, end)`\n\n###### .min\n\nReturns the provided number (count) of minimal values in the array from `start` index to `end` index.\n\n`[1, 2, 3, 4].min(count, start, end)`\n\n###### .minIndexes\n\nReturns the provided number (count) of minimal values with their indexes in the array from `start` index to `end` index.\n\n`[1, 2, 3, 4].minIndexes(count, start, end)`\n\n###### .average\n\nReturns the average of all the number or decimal values in the array from `start` index to `end` index.\n\n`[1, 2, 3, 4].average(start, end)`\n\n###### .sum\n\nReturns the sum of all the number or decimal values in the array from `start` index to `end` index.\n\n`[1, 2, 3, 4].sum(start, end)`\n\n###### .acosMap\n\nModifies the array with `acos` of all the values. Modifies the whole array in place. The method option has two options - `replace` (replace the whole array with these values) and `inrange` (just replace the range of items with the new array values keeping the left and right array items in place)\n\n`[1, 2, 3, 4].acosMap(start, end, method = \"replace\", thisValue)`\n\n###### .cosMap\n\nModifies the array with `cos` of all the values. Modifies the whole array in place. The method option has two options - `replace` (replace the whole array with these values) and `inrange` (just replace the range of items with the new array values keeping the left and right array items in place)\n\n`[1, 2, 3, 4].cosMap(start, end, method = \"replace\", thisValue)`\n\n###### .sinMap\n\nModifies the array with `sin` of all the values. Modifies the whole array in place. The method option has two options - `replace` (replace the whole array with these values) and `inrange` (just replace the range of items with the new array values keeping the left and right array items in place)\n\n`[1, 2, 3, 4].sinMap(start, end, method = \"replace\", thisValue)`\n\n###### .asinMap\n\nModifies the array with `asin` of all the values. Modifies the whole array in place. The method option has two options - `replace` (replace the whole array with these values) and `inrange` (just replace the range of items with the new array values keeping the left and right array items in place)\n\n`[1, 2, 3, 4].asinMap(start, end, method = \"replace\", thisValue)`\n\n###### .absMap\n\nModifies the array with `absolute` of all the values. Modifies the whole array in place. The method option has two options - `replace` (replace the whole array with these values) and `inrange` (just replace the range of items with the new array values keeping the left and right array items in place)\n\n`[1, 2, 3, 4].absMap(start, end, method = \"replace\", thisValue)`\n\n###### .factorialMap\n\nReturns the `factorial value` of all number values of the array from `start` index to `end` index.\n\n`[1, 2, 3, 4].factorialMap(start, end, thisValue)`\n\n###### .cosMapCopy\n\nReturns the array with `cos` of all the values of the array from `start` index to `end` index. Returns a new object and does not modify the array in place.\n\n`[1, 2, 3, 4].cosMapCopy(start, end, method = \"replace\", thisValue)`\n\n###### .acosMapCopy\n\nReturns the array with `acos` of all the values of the array from `start` index to `end` index. Returns a new object and does not modify the array in place.\n\n`[1, 2, 3, 4].acosMapCopy(start, end, method = \"replace\", thisValue)`\n\n###### .sinMapCopy\n\nReturns the array with `sin` of all the values of the array from `start` index to `end` index. Returns a new object and does not modify the array in place.\n\n`[1, 2, 3, 4].sinMapCopy(start, end, method = \"replace\", thisValue)`\n\n###### .asinMapCopy\n\nReturns the array with `asin` of all the values of the array from `start` index to `end` index. Returns a new object and does not modify the array in place.\n\n`[1, 2, 3, 4].asinMapCopy(start, end, method = \"replace\", thisValue)`\n\n###### .absMapCopy\n\nReturns the array with `absMap` of all the values of the array from `start` index to `end` index. Returns a new object and does not modify the array in place.\n\n`[1, 2, 3, 4].absMapCopy(start, end, method = \"replace\", thisValue)`\n\n\u003c!--\n###### .LN2Map\n\nModifies the array with `LN2` of all the values from `start` index to `end` index. Modifies the array in place. The method option has two options - replace (replace the whole array with these values) and inrange (just replace the range of items with the new array values keeping the left and right array items in place).\n\n`[1, 2, 3, 4].LN2Map(start, end, method = \"replace\", thisValue)`\n\n###### .LN10Map\n\nModifies the array with `LN10` of all the values from `start` index to `end` index. Modifies the array in place. The method option has two options - replace (replace the whole array with these values) and inrange (just replace the range of items with the new array values keeping the left and right array items in place).\n\n`[1, 2, 3, 4].LN10Map(start, end, method = \"replace\", thisValue)`\n\n###### .LOG2EMap\n\nModifies the array with `Log2` of all the values from `start` index to `end` index. Modifies the array in place. The method option has two options - replace (replace the whole array with these values) and inrange (just replace the range of items with the new array values keeping the left and right array items in place).\n\n`[1, 2, 3, 4].LOG2EMap(start, end, method = \"replace\", thisValue)`\n\n###### .LOG10EMap\n\nModifies the array with `Log10` of all the values from `start` index to `end` index. Modifies the array in place. The method option has two options - replace (replace the whole array with these values) and inrange (just replace the range of items with the new array values keeping the left and right array items in place).\n\n`[1, 2, 3, 4].LOG10EMap(start, end, method = \"replace\", thisValue)`\n\n###### .LN2MapCopy\n\nReturns the copy array with `LN2` of all the values from `start` index to `end` index. Returns a new object and does not modify the array in place.\n\n`[1, 2, 3, 4].LN2MapCopy(start, end, method = \"replace\", thisValue)`\n\n###### .LN10MapCopy\n\nReturns the copy array with `LN10` of all the values from `start` index to `end` index. Returns a new object and does not modify the array in place.\n\n`[1, 2, 3, 4].LN10MapCopy(start, end, method = \"replace\", thisValue)`\n\n###### .LOG2EMapCopy\n\nReturns the copy array with `Log2E` of all the values from `start` index to `end` index. Returns a new object and does not modify the array in place.\n\n`[1, 2, 3, 4].LOG2EMapCopy(start, end, method = \"replace\", thisValue)`\n--\u003e\n\n###### .floorMap\n\nModifies the array with `floor` of all the number values from `start` index to `end` index. Modifies the whole array in place. The method option has two options - replace (replace the whole array with these values) and inrange (just replace the range of items with the new array values keeping the left and right array items in place).\n\n`[1, 2, 3, 4].floorMap(start, end, method = \"replace\", thisValue)`\n\n###### .ceilMap\n\nModifies the array with `ceil` of all the number values from `start` index to `end` index. Modifies the whole array in place. The method option has two options - replace (replace the whole array with these values) and inrange (just replace the range of items with the new array values keeping the left and right array items in place).\n\n`[1, 2, 3, 4].ceilMap(start, end, method = \"replace\", thisValue)`\n\n###### .roundMap\n\nModifies the array with `round` of all the number values from `start` index to `end` index. Modifies the whole array in place. The method option has two options - replace (replace the whole array with these values) and inrange (just replace the range of items with the new array values keeping the left and right array items in place).\n\n`[1, 2, 3, 4].roundMap(start, end, method = \"replace\", thisValue)`\n\n###### .floorMapCopy\n\nReturns the copy of array with `floor` of all the number values from `start` index to `end` index. Returns a new object and does not modify the array in place.\n\n`[1, 2, 3, 4].floorMapCopy(start, end, method = \"replace\", thisValue)`\n\n###### .ceilMapCopy\n\nReturns the copy of array with `ceil` of all the number values from `start` index to `end` index. Returns a new object and does not modify the array in place.\n\n`[1, 2, 3, 4].ceilMapCopy(start, end, method = \"replace\", thisValue)`\n\n###### .roundMapCopy\n\nReturns the copy of array with `round` of all the number values from `start` index to `end` index. Returns a new object and does not modify the array in place.\n\n`[1, 2, 3, 4].roundMapCopy(start, end, method = \"replace\", thisValue)`\n\n###### .squareMap\n\nModifies the array with `square` of all the array values from `start` index to `end` index. Modifies the whole array in place. The method option has two options - replace (replace the whole array with these values) and inrange (just replace the range of items with the new array values keeping the left and right array items in place)\n\n`[1, 2, 3, 4].squareMap(start, end, method = \"replace\", thisValue)`\n\n###### .sqrtMap\n\nModifies the array with `square root` of all the array values from `start` index to `end` index. Modifies the whole array in place. The method option has two options - replace (replace the whole array with these values) and inrange (just replace the range of items with the new array values keeping the left and right array items in place)\n\n`[1, 2, 3, 4].sqrtMap(start, end, method = \"replace\", thisValue)`\n\n###### .powMap\n\nModifies the array with `power` of all the array values with the provided power value from `start` index to `end` index. Modifies the whole array in place. The method option has two options - replace (replace the whole array with these values) and inrange (just replace the range of items with the new array values keeping the left and right array items in place)\n\n`[1, 2, 3, 4].powMap(power, start, end, method = \"replace\", thisValue)`\n\n###### .multiplyMap\n\nModifies the array with `multiplication` of all the array values from `start` index to `end` index with provided multiplier. Modifies the whole array in place. The method option has two options - replace (replace the whole array with these values) and inrange (just replace the range of items with the new array values keeping the left and right array items in place)\n\n`[1, 2, 3, 4].multiplyMap(multiplier, start, end, method = \"replace\", thisValue)`\n\n###### .squareMapCopy\n\nReturns the array with `square` of all the array values from `start` index to `end` index. Returns a new object and does not modify the array in place.\n\n`[1, 2, 3, 4].squareMapCopy(start, end, method = \"replace\", thisValue)`\n\n###### .sqrtMapCopy\n\nReturns the array with `square root` of all the array values from `start` index to `end` index. Returns a new object and does not modify the array in place.\n\n`[1, 2, 3, 4].sqrtMapCopy(start, end, method = \"replace\", thisValue)`\n\n###### .powMapCopy\n\nReturns the array with `power` of all the array values with provided power value from `start` index to `end` index. Returns a new object and does not modify the array in place.\n\n`[1, 2, 3, 4].powMapCopy(power, start, end, method = \"replace\", thisValue)`\n\n###### .multiplyMapCopy\n\nReturns the array with `multiplication` of provided multiplier with all the array values from `start` index to `end` index. Returns a new object and does not modify the array in place.\n\n`[1, 2, 3, 4].multiplyMapCopy(multiplier, start, end, method = \"replace\", thisValue)`\n\n###### .randomRange\n\nReturns the array with count number of array items with random values multiplied with the provided multiplier. Modifies the array in place.\n\n`[1, 2, 3, 4].randomRange(count, multiplier)`\n\n\u003c!--\n###### .fillRandomRange\n\nModifies the array with array items with random values multiplied with the provided multiplier from `start` index to `end` index. Modifies the array in place.\n\n`[1, 2, 3, 4].fillRandomRange(count, multiplier, start, end, method = \"replace\", thisValue)`\n--\u003e\n\n###### .fillRange\n\nModifies the array with array items with random values multiplied with the provided multiplier from `start` index to `end` index. Modifies the array in place.\n\n`[1, 2, 3, 4].fillRange(item, start, end, method = \"inrange\", thisValue)`\n\n###### .append\n\nAppend the item to the array. Modifies the array in place.\n\n`[1, 2, 3, 4].append(item)`\n\n###### .isArray\n\nReturns if the provided iterable is an array. Alternatively, if the iterable is not provided then it check if the object is an Array.\n\n`[1, 2, 3, 4].isArray(iterable)`\n\n###### .insert\n\nInsert the item to the array at index provided. Modifies the array in place.\n\n`[1, 2, 3, 4].insert(index, item, thisArray)`\n\n###### .insertAll\n\nInsert the array or list of items to the array at index provided. Modifies the array in place.\n\n`[1, 2, 3, 4].insertAll(index, array, thisArray)`\n\n###### .concatMerge\n\nConcat the array or list of items to the array at index provided. Modifies the array in place.\n\n`[1, 2, 3, 4].concatMerge(array, thisValue, ...args)`\n\n###### .merge\n\nConcat the array or list of items to the array at index provided. Modifies the array in place.\n\n`[1, 2, 3, 4].merge(array, thisValue, ...args)`\n\n###### .count\n\nCount the number of items in the array from `start` index to `end` index.\n\n`[1, 2, 3, 4].count(item, start, end, method = \"replace\", thisValue)`\n\n###### .replace\n\nReplace the item to the array at index provided from `start` index to `end` index. Modifies the array in place.\n\n`[1, 2, 3, 4].replace(index, item, thisValue)`\n\n###### .replaceCopy\n\nReplace the item to the array at index provided from `start` index to `end` index. Returns an new modified array.\n\n`[1, 2, 3, 4].replaceCopy(index, item, thisValue)`\n\n###### .replaceAll\n\nReplace the item to the array at index provided from `start` index to `end` index. Modifies the array in place.\n\n`[1, 2, 3, 4].replaceAll(item, replaceValue, start, end, method = \"replace\", thisValue)`\n\n###### .replaceAllCopy\n\nReplace the item to the array at index provided from `start` index to `end` index. Returns an new modified array.\n\n`[1, 2, 3, 4].replaceAllCopy(item, replaceValue, start, end, method = \"replace\", thisValue)`\n\n###### .remove\n\nRemoves the first found equal item and Returns the removed item of array from `start` index to `end` index. Modifies the array in place.\n\n`[1, 2, 3, 4].remove(item, thisArray)`\n\n###### .removeAll\n\nRemoves all items and Returns the removed items of array from `start` index to `end` index. Modifies the array in place.\n\n`[1, 2, 3, 4].removeAll(item, start, end, method = \"replace\", thisValue)`\n\n###### .removeCopy\n\nRemoves the first found equal item and Returns the removed item of array from `start` index to `end` index. Returns a new modified array object.\n\n`[1, 2, 3, 4].removeCopy(item, thisArray)`\n\n###### .removeAllCopy\n\nRemoves all items and Returns the removed items of array from `start` index to `end` index. Returns a new modified array object.\n\n`[1, 2, 3, 4].removeAllCopy(item, start, end, method = \"replace\", thisValue)`\n\n###### .pop\n\nRemoves and Returns the removed item index of array. Modifies the array in place.\n\n`[1, 2, 3, 4].pop(index)`\n\n###### .clear\n\nClears the array from `start` index to `end` index. Modifies the array in place.\n\n`[1, 2, 3, 4].clear(start, end)`\n\n###### .index\n\nReturns the index of array from `start` index to `end` index. Returns a new object and does not modify the array in place.\n\n`[1, 2, 3, 4].index(item, start, end, thisArray)`\n\n###### .sort\n\nModifies the array with a sort from `start` index to `end` index. Modifies the array in place.\n\n`[1, 2, 3, 4].sort(key = null, reverse = false, start, end, method = \"replace\", thisValue)`\n\n###### .reverse\n\nReturn a one level reverse copy of the array from `start` index to `end` index. Modifies the array in place. The method option has two options - replace (replace the whole array with these values) and inrange (just replace the range of items with the new array values keeping the left and right array items in place)\n\n`[1, 2, 3, 4].reverse(start, end, thisValue)`\n\n###### .reverseCopy\n\nReturns a deep reverse copy of the array from `start` index to `end` index. Returns a new object and does not modify the array in place.\n\n`[1, 2, 3, 4].reverseCopy(start, end, thisValue)`\n\n###### .copy\n\nReturns a deep copy of the array from `start` index to `end` index. Returns a new object and does not modify the array in place.\n\n`[1, 2, 3, 4].copy(start, end, thisValue)`\n\n###### .diction\n\nReturns the converted dictionary from the array from `start` index to `end` index. Returns a new object and does not modify the array in place.\n\n`[1, 2, 3, 4].diction(mapperFunction, arg, start, end, keyconvertor, thisValue, keyArrayValue)`\n\n###### .subset\n\nCheck if the array from `start` index to `end` index is a subset of the other provided iterator. Returns a boolean.\n\n`[1, 2, 3, 4].subset(iterable, start, end, thisValue)`\n\n###### .superset\n\nCheck if the array from `start` index to `end` index is a superset of the other provided iterator. Returns a boolean.\n\n`[1, 2, 3, 4].superset(iterable, start, end, thisValue)`\n\n###### .diffIterable\n\nReturns an object that has different items from `start` index to `end` index in the provided iterator when compared to the array. Returns a new object and does not modify the array in place\n\n`[1, 2, 3, 4].diffIterable(iterable, start, end, thisValue)`\n\n###### .diffSelf\n\nReturns an object that has different items from `start` index to `end` index in the array when compared to other provided iterator. Returns a new object and does not modify the array in place.\n\n`[1, 2, 3, 4].diffSelf(iterable, start, end, thisValue)`\n\n###### .diffBoth\n\nReturns an object that has different items from `start` index to `end` index in both the array when compared to other provided iterator. Returns a new object and does not modify the array in place.\n\n`[1, 2, 3, 4].diffBoth(iterable, start, end, thisValue)`\n\n###### .equal\n\nCheck is the array from `start` index to `end` index and provided iterator have similar number of items, similar items, and similar indexes.\n\n`[1, 2, 3, 4].equal(iterable, start, end, thisValue)`\n\n###### .similar\n\nCheck if the array from `start` index to `end` index and provided iterator have similar number of items and similar item values.\n\n`[1, 2, 3, 4].similar(iterable, start, end, thisValue)`\n\n###### .uniques\n\nModifies the array from `start` index to `end` index into all the unique items in an array. Modifies the array in place. The method option has two options - replace (replace the whole array with these values) and inrange (just replace the range of items with the new array values keeping the left and right array items in place).\n\n`[1, 2, 3, 4].uniques(start, end, method = \"replace\", thisValue)`\n\n###### .uniquesCopy\n\nReturns all the unique items of an array from `start` index to `end` index. Returns a new object and does not modify the array in place.\n\n`[1, 2, 3, 4].uniquesCopy(start, end, method = \"replace\", thisValue)`\n\n###### .duplicates\n\nModifies the array from `start` index to `end` index into (only) all the duplicate items in an array. Modifies the array in place. The method option has two options - replace (replace the whole array with these values) and inrange (just replace the range of items with the new array values keeping the left and right array items in place).\n\n`[1, 2, 3, 4].duplicates(start, end, method = \"replace\", thisValue)`\n\n###### .duplicatesCopy\n\nReturns (only) all the duplicate items of an array from `start` index to `end` index. Returns a new object and does not modify the array in place.\n\n`[1, 2, 3, 4].duplicatesCopy(start, end, method = \"replace\", thisValue)`\n\n###### .enqueue\n\nInsert the item of into an array using the push method (Bottom FIFO queue execution)\n\n`[1, 2, 3, 4].enqueue(item)`\n\n###### .dequeue\n\nRemove the first item of an array using the shift method (Bottom FIFO queue execution)\n\n`[1, 2, 3, 4].dequeue()`\n\n###### .transpose\n\nTranspose the array from `start` index to `end` index. Modifies the array in place. The method option has two options - replace (replace the whole array with these values) and inrange (just replace the range of items with the new array values keeping the left and right array items in place).\n\n`[1, 2, 3, 4].transpose(iterator, start, end, method = \"replace\", thisValue)`\n\n###### .transposeCopy\n\nTranspose the array from `start` index to `end` index. Returns a new object and does not modify the array in place.\n\n`[1, 2, 3, 4].transposeCopy(iterator, start, end, method = \"replace\", thisValue)`\n\n###### .immutable, .freeze, .tuple\n\nCreate an array into immutable array using the `freeze` method. Modifies the array in place unless an `array` is provided. `array` option provided returns a frozen object as if `.freeze` is a frozen array object creator.\n\n`[1, 2, 3, 4].immutables(array)`\n`[1, 2, 3, 4].freeze(array)`\n`[1, 2, 3, 4].tuple(array)`\n\n`[1, 2, 3, 4].immutables()`\n`[1, 2, 3, 4].freeze()`\n`[1, 2, 3, 4].tuple()`\n\n###### .flatten\n\nFlatten the array from `start` index to `end` index . Modify's the array in place. The method option has two options - replace (replace the whole array with these values) and inrange (just replace the range of items with the new array values keeping the left and right array items in place).\n\n`[1, 2, 3, 4].flatten(start, end, method = \"replace\", thisValue)`\n\n###### .flattenDeep\n\nDeep Flatten the array from `start` index to `end` index . Modify's the array in place. The method option has two options - replace (replace the whole array with these values) and inrange (just replace the range of items with the new array values keeping the left and right array items in place).\n\n`[1, 2, 3, 4].flattenDeep(start, end, method = \"replace\", thisValue)`\n\n###### .flattenCopy\n\nFlatten the array from `start` index to `end` index . Returns a new object and does not modify the array in place.\n\n`[1, 2, 3, 4].flattenCopy(start, end, method = \"replace\", thisValue)`\n\n###### .flattenDeepCopy\n\nDeep Flatten the array from `start` index to `end` index . Returns a new object and does not modify the array in place.\n\n`[1, 2, 3, 4].flattenDeepCopy(start, end, method = \"replace\", thisValue)`\n\n###### .range\n\nCreate a range of numbers from `start` index to `end` index with a increment of provided `step`.\n\n`[1, 2, 3, 4].range(start, stop, step)`\n\n###### .enumerate\n\nEnumerate an array into an iteratable array of objects with structure `{index, value}` or `[index, value]` in each item. Type can be object or array.\n\n`[1, 2, 3, 4].enumerate(type = \"object\", thisValue)`\n\n###### .generator\n\nGenerator is a function that returns a generator function from an array into a iteratable generator function with its values of objects with structure `{index, value}` or `[index, value]`. Type can be object or array.\n\n`[1, 2, 3, 4].generator(type = \"object\", thisValue)`\n\n###### .del\n\nDelete items of an array from start index to end index.\n\n`[1, 2, 3, 4].del(start, end, thisValue)`\n\n###### .log\n\nLog items of an array from `start` index to `end` index to console.\n\n`[1, 2, 3, 4].log(start, end, message = \"\", callback = console.log, thisValue)`\n\n\u003ca name=\"object\"\u003e\u003c/a\u003e\n\n### Object prototype extended function\n\n#### Object - Dictionary [TODO \u003csub\u003eindevelopment\u003c/sub\u003e]\n\n```\nvar extendObject = require(\"extenders\").extendObject;\nextendObject();\n\nlet arr = [1,2,3,4,5,6];\nconsole.log(arr);\narr.clear();\nconsole.log(arr);\n```\n\n```\nvar ObjectExtended = require(\"extenders\").ObjectExtended;\n\nlet obj = ObjectExtended.create({ \"test\" : \"test\", \"tester\" : \"100\" });\nconsole.log(obj);\nobj.clear();\nconsole.log(obj);\n```\n\n#### Object - API List [TODO \u003csub\u003eindevelopment\u003c/sub\u003e]\n\n###### .clear [TODO \u003csub\u003eindevelopment\u003c/sub\u003e]\n\n\u003ca name=\"string\"\u003e\u003c/a\u003e\n\n### String prototype extended function\n\n#### String [TODO \u003csub\u003eindevelopment\u003c/sub\u003e]\n\n```\nvar StringExtended = require(\"extenders\").StringExtended;\n\nlet str = new StringExtended(\"Tesing my modified String JS object functions\");\nconsole.log(str);\nstr.clear();\nconsole.log(str);\n```\n\n```\nvar extendString = require(\"extenders\").extendString;\nextendString();\n\nlet str = \"Tesing my modified String JS object functions\";\nconsole.log(str);\nstr.clear();\nconsole.log(str);\n```\n\n#### String - API List [TODO \u003csub\u003eindevelopment\u003c/sub\u003e]\n\n###### .clear\n\n`\"Test string\".clear(start, end)`\n\n\u003ca name=\"numbers\"\u003e\u003c/a\u003e\n\n### Numbers prototype extended function\n\n#### Numbers [TODO \u003csub\u003eindevelopment\u003c/sub\u003e]\n\n```\nvar NumberExtended = require(\"extenders\").NumberExtended;\n\nlet str = new NumberExtended(\"Tesing my modified String JS object functions\");\nconsole.log(str);\nstr.clear();\nconsole.log(str);\n```\n\n```\nvar extendNumber = require(\"extenders\").extendNumber;\nextendNumber();\n\nlet str = \"Tesing my modified String JS object functions\";\nconsole.log(str);\nstr.clear();\nconsole.log(str);\n```\n\n#### Numbers - API List [TODO \u003csub\u003eindevelopment\u003c/sub\u003e]\n\n###### .imul\n\n`.imul(...args)`\n\n\u003ca name=\"math\"\u003e\u003c/a\u003e\n\n### Math prototype extended function\n\n#### Math [TODO \u003csub\u003eindevelopment\u003c/sub\u003e]\n\n```\nvar extendMath = require(\"extenders\").extendMath;\nextendMath();\n\nlet arr = [1,2,3,4,5,6,7,8,9];\nconsole.log(arr);\narr.imul();\nconsole.log(arr);\n```\n\n#### Math - API List [TODO \u003csub\u003eindevelopment\u003c/sub\u003e]\n\n###### .imul\n\n`.imul(...args)`\n\n\u003ca name=\"utils\"\u003e\u003c/a\u003e\n\n### Utils prototype extended function\n\n#### Utils [TODO \u003csub\u003eindevelopment\u003c/sub\u003e]\n\n```\n\n```\n\n#### Utils - API List [TODO \u003csub\u003eindevelopment\u003c/sub\u003e]\n\n###### .clear\n\n`.clear(start, end)`\n\n\u003ca name=\"decorators\"\u003e\u003c/a\u003e\n\n### Decorators - functions\n\n#### Decorators - API List\n\n\u003ca name=\"singleton\"\u003e\u003c/a\u003e\n\n### Singleton\n\n`singleton(key, object, replace, freeze)`\n\n#### Singleton - API List\n\n```\n\nvar singleton = require(\"extenders\").singleton;\n\nlet key = \"somename\";\nlet object = { \"test\": \"value\" };\nlet replace = true;\nlet freeze = true;\n\nlet inst = singleton(key, object, replace, freeze);\nconsole.log(inst);\n\n```\n\n###### .createClassDecorator\n\n`.createClassDecorator(decoratorFunction)`\n\n```\n\nconst createClassDecorator = require('./src/decorator').createClassDecorator;\n\n\nfunction addLogMethod(target, prefix = \"\") {\n    target.prototype.log = function (msg) {\n        console.log(`[${prefix}${this.constructor.name}] ${msg}`);\n    };\n}\n\nconst loggable = createClassDecorator(addLogMethod);\n@loggable(\"Prefix \")\nclass Example {\n    constructor(name) {\n        this.name = name;\n    }\n}\nconst exloggable = new Example(\"example\");\nexloggable.log(\"Hello, world!\"); // logs \"[Prefix Example] Hello, world!\"\n\n```\n\n###### .createMethodDecorator\n\n`.createMethodDecorator(decoratorFunction)`\n\n```\n\nconst createMethodDecorator = require('./src/decorator').createMethodDecorator;\n\n\n// Method\nconst addPrefix = createMethodDecorator((result, prefix) =\u003e {\n    return `${prefix}: ${result}`;\n});\nclass Example {\n    @addPrefix(\"Result\")\n    add(a, b) {\n        return a + b;\n    }\n}\n\nconst exaddPrefix = new Example();\nconsole.log(exaddPrefix.add(2, 3)); // logs \"Result: 5\"\n\n```\n\n\u003ca name=\"extenders\"\u003e\u003c/a\u003e\n\n### Extenders functions\n\n#### Extenders [TODO \u003csub\u003eindevelopment\u003c/sub\u003e]\n\n```\n\n```\n\n#### Extenders - API List [TODO \u003csub\u003eindevelopment\u003c/sub\u003e]\n\n###### .clear\n\n`.clear()`\n\n\u003ca name=\"numpyjs\"\u003e\u003c/a\u003e\n\n### Numpyjs functions\n\n#### Numpyjs [TODO \u003csub\u003econsidering\u003c/sub\u003e]\n\n```\n\n```\n\n#### Numpyjs - API List [TODO \u003csub\u003econsidering\u003c/sub\u003e]\n\n###### .clear\n\n`.clear()`\n\n\u003ca name=\"pandas\"\u003e\u003c/a\u003e\n\n### Pandas functions\n\n#### Pandas [TODO \u003csub\u003econsidering\u003c/sub\u003e]\n\n```\n\n```\n\n#### Pandas - API List [TODO \u003csub\u003econsidering\u003c/sub\u003e]\n\n###### .clear\n\n`.clear()`\n\n# Current Status\n\n- In development for Object, String, Decorator, Math, Numbers.\n\n# Todo\n\nCheck [.todo](./.todo) file for latest TODO list\n\n\u003c!-- # References --\u003e\n\n# License\n\nThe MIT License (MIT) - See [LICENSE](./LICENSE) for further details\n\nCopyright © 2023 - till library works\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fganeshkbhat%2Fjsextenders","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fganeshkbhat%2Fjsextenders","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fganeshkbhat%2Fjsextenders/lists"}