const algorithm = arr =>
arr.reduce((acc, item) => {
if (!item.categories.length) {
acc["without categories"] = acc["without categories"]
? [...acc["without categories"], item]
: [item];
return acc;
}
item.categories.forEach(({name}) => {
acc[name] = acc[name] ? [...acc[name], item] : [item];
});
return acc;
}, {});