UNPKG

array-group-str-omit-num-char

Version:

Groups array of strings by omitting number characters

11 lines (9 loc) 1.45 kB
/** * @name array-group-str-omit-num-char * @fileoverview Groups array of strings by omitting number characters * @version 6.0.19 * @author Roy Revelt, Codsen Ltd * @license MIT * {@link https://codsen.com/os/array-group-str-omit-num-char/} */ import{rApply as h}from"ranges-apply";import{hasOwnProp as g}from"codsen-utils";var p="6.0.19";var O=p,$={wildcard:"*",dedupePlease:!0};function E(i,m){if(!Array.isArray(i))return i;if(!i.length)return{};let o={...$,...m},c=o.dedupePlease?[...new Set(i)]:Array.from(i),e={};for(let l=0,n=c.length;l<n;l++){let r=c[l].match(/\d+/gm);if(!r)e[c[l]]={count:1};else{let t=c[l].replace(/\d+/gm,o.wildcard);g(e,t)?(r.forEach((s,d)=>{e[t].elementsWhichWeCanReplaceWithWildcards[d]&&s!==e[t].elementsWhichWeCanReplaceWithWildcards[d]&&(e[t].elementsWhichWeCanReplaceWithWildcards[d]=!1)}),e[t].count+=1):e[t]={count:1,elementsWhichWeCanReplaceWithWildcards:Array.from(r)}}}let a={};return Object.keys(e).forEach(l=>{let n=l;if(Array.isArray(e[l].elementsWhichWeCanReplaceWithWildcards)&&e[l].elementsWhichWeCanReplaceWithWildcards.some(r=>r!==!1)){let r=[],t=0;for(let s=0;s<e[l].elementsWhichWeCanReplaceWithWildcards.length;s++)t=n.indexOf(`${o.wildcard||""}`,t+(o.wildcard||"").length),e[l].elementsWhichWeCanReplaceWithWildcards[s]!==!1&&r.push([t,t+(o.wildcard||"").length,e[l].elementsWhichWeCanReplaceWithWildcards[s]]);n=h(n,r)}a[n]=e[l].count}),a}export{$ as defaults,E as groupStr,O as version};