В этом коде obj ссылается на все элементы в массиве? Означает ли obj [item] проверку, находится ли «текущий элемент» в объекте (obj). Если его нет, он присваивает ему 0, если он увеличивает его на 1.
const data = ['car', 'car', 'truck', 'truck', 'bike', 'walk', 'car', 'van', 'bike', 'walk', 'car',
'van', 'car', 'truck', 'pogostick'
];
const transportation = data.reduce(function(obj, item) {
if (!obj[item]) {
obj[item] = 0;
}
obj[item]++;
return obj;
}, {});
console.log(transportation);