JSFiddle - React, Tailwind, and code Playground

by MuLtDirectX

JavaScript

var 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(original) {
 
	var compressed = [];
	// make a copy of the input array
	var copy = original.slice(0);
 
	// first loop goes over every element
	for (var i = 0; i < original.length; i++) {
 
		var myCount = 0;	
		// loop over every element in the copy and see if it's the same
		for (var w = 0; w < copy.length; w++) {
			if (original[i] == copy[w]) {
				// increase amount of times duplicate is found
				myCount++;
				// sets item to undefined
				delete copy[w];
			}
		}
 
		if (myCount > 0) {
			var a = new Object()
			a.value = original[i]
			a.count = myCount
			compressed.push(a)
		}
	}
 
	return compressed;
}

// It should go something like this:

var testArray = new Array("dog", "dog", "cat", "buffalo", "wolf", "cat", "tiger", "cat");
var newArray = compressArray(testArray)

console.log(newArray)