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.0
 * @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.0";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};