Если говорить именно об уникализации массива, то
const uniqueWithCount = (arr, idKey, countKey) =>
Object.values(arr.reduce((acc, n) => (
(acc[n[idKey]] ??= { ...n, [countKey]: 0 })[countKey]++,
acc
), {}));
const result = uniqueWithCount(arr, 'name', 'qty');
Но вообще-то, в корзине элементы должны быть уникальны изначально, надо в момент добавления проверять наличие элемента, если есть - увеличивать его счётчик, нет - добавить со счётчиком, имеющим единицу в качестве значения. Как это может выглядеть:
const addToCart = product =>
setCart(cart => cart.some(n => n.id === product.id)
? cart.map(n => n.id === product.id ? { ...n, qty: n.qty + 1 } : n)
: [ ...cart, { ...product, qty: 1 } ]
);
https://jsfiddle.net/6etkvyr9/