在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}, ...]
答案 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));