array-group-str-omit-num-char
Version:
Groups array of strings by omitting number characters
11 lines (9 loc) • 1.44 kB
JavaScript
/**
* @name array-group-str-omit-num-char
* @fileoverview Groups array of strings by omitting number characters
* @version 6.1.3
* @author Roy Revelt
* @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.1.3";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 r=0,n=c.length;r<n;r++){let l=c[r].match(/\d+/gm);if(!l)e[c[r]]={count:1};else{let t=c[r].replace(/\d+/gm,o.wildcard);g(e,t)?(l.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(l)}}}let a={};return Object.keys(e).forEach(r=>{let n=r;if(Array.isArray(e[r].elementsWhichWeCanReplaceWithWildcards)&&e[r].elementsWhichWeCanReplaceWithWildcards.some(l=>l!==!1)){let l=[],t=0;for(let s=0;s<e[r].elementsWhichWeCanReplaceWithWildcards.length;s++)t=n.indexOf(`${o.wildcard||""}`,t+(o.wildcard||"").length),e[r].elementsWhichWeCanReplaceWithWildcards[s]!==!1&&l.push([t,t+(o.wildcard||"").length,e[r].elementsWhichWeCanReplaceWithWildcards[s]]);n=h(n,l)}a[n]=e[r].count}),a}export{$ as defaults,E as groupStr,O as version};