JSFiddle - React, Tailwind, and code Playground

by Vladymyr Shevchuk

JavaScript

export function uniq(arr) {
    return [...new Set(arr)]
}

function uniq(array) {
  return Array.from((new Set(array)));
}


const invertObject = obj => {
    Object.entries(obj)
        .forEach(([key, value]) => {
            obj[value] = key;
            delete obj[key];
        });
};


function trimSymbols(str,num) {
  const countLetters = {};
  let res = '';
  for(let i = 0; i < str.length; i++) {
    if(!countLetters.hasOwnProperty(str[i])) {
      countLetters[str[i]] = 1;
    } else if(countLetters.hasOwnProperty(str[i]) && countLetters[str[i]] < num) {
      countLetters[str[i]]++
    } 
  }
  for(let key in countLetters) {
    if(countLetters[key] === num) {
      res += key.repeat(countLetters[key]);
    }
  }
  return res;
}


export function trimSymbols(str, num) {
    if (num === 0 || !str) {
        return "";
    }

    if (!num) {
        return str;
    }

    let result = str[0];
    let letterCount = 1;
    for (let letter of str) {
        if (letter != result[result.length - 1]) {
            letterCount = 1;
            result += letter;
            continue;
        }

        if (letterCount < num) {
            result += letter;
            letterCount++;
        }

    }
    return result;
}

export function trimSymbols(str, cnt) {
  const map = new Map();
  let res = "";
  
  if (cnt > 0) {
    for (let symbol of str) {
      let current = map.get(symbol);
      if (current) {
        if (current < cnt) {
          map.set(symbol, current + 1);
          res += symbol;
        }
      } else {
        map.set(symbol, 1);
        res += symbol;
      }
    }
  }

  return res;
}

export function trimSymbols(str, limit) {
  if (limit === undefined)
    return str;
  let symbolCounters = {};
  let newStr = '';
  for (let char of str) {
    symbolCounters[char] = symbolCounters[char] === undefined ? 1 : symbolCounters[char] + 1;
    if (symbolCounters[char] <= limit)
      newStr += char;
  }
  return newStr;
}

function trimSymbols(str,...