169 похожих чатов

У меня есть массив: [ {

"id": 1,
"category": "breakfast",
"title": "eggs",
"ingridients": [
"eggs",
"salt",
"tomatoes"
],
"time": 15,
"difficulty": 2
},
{
"id": 2,
"category": "breakfast",
"title": "porridge",
"ingridients": [
"oats",
"salt",
"sugar"
],
"time": 20,
"difficulty": 2
},
{
"id": 2,
"category": "dessert",
"title": "cake",
"ingridients": [],
"time": 40,
"difficulty": 4
}
]

При помощи редюс хочу получить вот это:
[
{id: 0, category: breakfast, total: 2},
{id: 1, category: dessert, total: 1},
]

Кто-то может подсказать?

16 ответов

5 просмотров

Так у тебя же там нет id с нулём

Vlad- Автор вопроса

Блин редьюсом сложно на самом деле т.к. у него же типа вычисляется одно значение на основе всего массива, а тут их два вон тотала

Будет проще и эффективнее сначала получиьь map где ключ будет id а значение - накопленный объект

Object.entries(src.reduce((acc, { category }) => (acc[category] = (acc[category] || 0) + 1, acc), {})).map(([category, total]) => ({ category, total })) 🌚

Vlad- Автор вопроса
Vlad
Cпасибо👍

Только перепиши нормально xD

Vlad
Cпасибо👍

Ещё варик: Object.values(data.reduce((acc, item) => { if (acc[item.category]) { acc[item.category]["total"] += 1; } else { acc[item.category] = { category: item.category, total: 1 }; } return acc; }, {})); без map

Максим
Ещё варик: Object.values(data.reduce((acc, item) =...

Чуть короче. Object.values(data.reduce((acc, { category }) => { acc[category] ??= { category, total: 0 } acc[category].total += 1 return acc }, {}))

свой вариант тоже напишу foods.reduce((acc, { category: cur }) => ~acc.map(({ category }) => category).indexOf(cur) ? [...acc] : [...acc, { category: cur, total: foods.filter(({ category }) => category === cur).length }] , [])

modernpunk
свой вариант тоже напишу foods.reduce((acc, { cat...

кто юзает спред в редусе у того высок риск смерти

Илюша 🎂
кто юзает спред в редусе у того высок риск смерти

Это правда Квадрат в итоге получается, когда его можно избежать

const extractCategories = (dishes) => { const categoriesMap = dishes.reduce((acc, { category }) => { const data = acc.get(category) ?? { id: acc.size, category, total: 0 }; data.total++; return acc.set(category, data); }, new Map()); return [...categoriesMap.values()]; }; поучаствую в конкурсе

Похожие вопросы

Обсуждают сегодня

зачем же переименовывать ? чтобы кол-во участников возросло или вдруг IBM от этого снова на свифте начнет кодить ? Я не понимаю что страшного в том что свифт гавно, если это т...
Oleh Nerzh
10
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
здравствуйте. совершаю вот такую вещь: strcpy(line, (char)current_number); где current number — неподписанный шорт, line — массив чаров. ругань следующая: main.c:29:30: error...
Roberto's Ширгозиев
13
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Добрый день! Подскажите, пожалуйста: какими компетенциями нужно обладать, чтобы претендовать на работу эрланг (отдельная благодарность, если про элексир тоже подскажете) разр...
via ☸️ led
20
Всем привет. Ребят подскажите пожалуйста. Вопрос по дизасемблировани. Начну с начала. У меня есть скомпилированная программа на ГО (я разработчик) - в ней есть защита лицензии...
Zloy
11
Можно попросить небольшое ревью кода? Тут немнога, я ничего интереснее не придумал, чем написать аналог tree в качестве практики с cmake. https://github.com/hrimov/tree-unix/...
Andrew Hrimov
11
Есть вопрос, по идее же эти два варианта работать будут одинаково? (В коде разумеется со стеком работа есть и много) create_cursor: .src equ esp .flags equ esp+4 .hcurs...
Mixail Frolov
4
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Карта сайта