JSFiddle - React, Tailwind, and code Playground

by MuLtDirectX

JavaScript

let classes = [
'b-statcounter',
'b-statcounter__metrika',
'b-statcounter__metrika_type_js',
'i-bem',
'b-search__table',
'b-form-input',
'b-form-input_theme_grey',
'b-form-input_size_l',
'i-bem',
'b-form-input__input',
'b-search__button',
'b-form-button__content',
'b-form-button__text',
'b-form-button__input',
'i-bem',
'b-main-menu',
'b-main-menu__tab',
'b-main-menu__tab',
'b-main-menu__tab',
'b-main-menu__tab',
'b-main-menu__tab_type_selected',
'b-main-menu__tab',
'b-main-menu__tab_type_selected',
'l-page__right',
'b-static-text',
'b-static-text',
'b-foot__layout-column',
'b-foot__layout-column_type_left',
'b-link',
'b-foot__link',
'b-foot__layout-column',
'b-foot__layout-column',
'b-foot__layout-column_type_center',
'b-link',
'b-foot__link',
'b-foot__layout-column',
'b-foot__layout-column_type_penultima',
'b-link',
'b-foot__link',
'b-foot__layout-column',
'b-foot__layout-column_type_right',
'b-copyright__link',
'b-foot__layout-gap-i'
]

function compressArray(classes) {
 
	let result = [];
 	let classes2 = classes.map(e =>  e)
  
  
  classes.forEach(e => {
  	let duplicated = 0
  	classes2.forEach((e2,i,classes2) => {
    	if (e === e2) {
      	duplicated++
        delete classes2[i]
      }
    })
    
   if (duplicated > 0) {
   	let a = {
    	name: e,
    	count: duplicated
    }
    result.push(a)
   } 
  })
  
 
	return result
}

console.log(compressArray(classes))