Групповые заказы с Ramda


Я сделал несколько сырой код, используя RamdaJS в основном группы заказов по их государств. Есть несколько вложенных структур. В настоящее время у меня есть рабочий код, но я интересно, если Ramda, возможно, может помочь убрать больше? Я добавил машинопись примечания в настоящее время (упрощенные) структуры более четко.

Я подготовил codesandbox с пример данных: https://codesandbox.io/s/yqwm2p65zz

import * as R from 'ramda'

export default function(orders: Order[], orderListing: OrderListing[]) {
  const pluckStateEnum = (orderState: OrderState) => orderState.enum

  const ordersByState = (states: OrderStateEnum[]) =>
    orders.filter(
      (order: Order) =>
        !R.isEmpty(
          R.intersection(R.map(pluckStateEnum, order.orderStates), states),
        ),
    )

  return orderListing.map(listing => ({
    id: listing.id,
    orders: ordersByState(listing.orderStateEnums).map(order => order.id),
  }))
}

interface Order {
  id: string
  orderStates: OrderState[]
}

interface OrderState {
  enum: OrderStateEnum
}

interface OrderListing {
  id: string
  orderStateEnums: OrderStateEnum[]
}

type OrderStateEnum =
  | 'RECEIVED'
  | 'PAID'
  | 'UNPAID'
  | 'CUSTOMER_NOTIFIED'
  | 'FINISHED'


125
1
задан 12 марта 2018 в 09:03 Источник Поделиться
Комментарии