我们可以在javascript中执行orders.stream()。mapToInt(Order :: getQuantity).sum())吗?

时间:2017-04-30 02:24:15

标签: javascript ecmascript-6

在java中,我使用流来计算这样的订单列表的总和:

case class Person(id: String, money: BigDecimal)

object Person {
  implicit final val bigDecimalAsPlainStringEncoder: Encoder[BigDecimal] = new Encoder[BigDecimal] {
    final def apply(value: BigDecimal): Json = Json.fromJsonNumber(JsonNumber.fromDecimalStringUnsafe(value.bigDecimal.toPlainString))
  }

  implicit val encoder: Encoder[Person] = Encoder.forProduct2("ID", "Money")(u => (u.id, u.money))

}

我想知道在迭代Order实例数组时是否有一种同样优雅的方式在javascript中执行此操作。基本上是这样的数组:

orders.stream().mapToInt(Order::getQuantity).sum()

到目前为止我有这样的事情,但我想知道它是否会更短:

[{quantity: 10}, {quantity: 20}, {quantity: 15}, ...]

1 个答案:

答案 0 :(得分:3)

您只需执行以下操作map

orders.reduce((a, b) => a + b.quantity, 0));

console.log([{
  quantity: 10
}, {
  quantity: 20
}, {
  quantity: 15
}].reduce((a, b) => a + b.quantity, 0));