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)