var arr1 = ["andesite", "dirt", "pink wool", "dirt", "dead shrub"];
var counts = {}; //из значений массива делаем ключи объекта,
//а из количества их повторений в массиве делаем их свойства
for( var i=0, l=arr1.length; i<l; i++) {
counts[arr1[i]] = (counts[arr1[i]] || 0) + 1; // что это? я понимаю, что это
//операция присвоения свойства ключу,
} // но как оно работает - не пойму.
console.log(counts);