tôi có một loạt các mặt hàng như sau:nhã làm một tổng của đối tượng thuộc tính trong CoffeeScript
@items = [
{price: 12, quantity:1},
{price: 4, quantity:1},
{price: 8, quantity:1}
]
Và tôi đang tìm kiếm một cái gì đó như thế này:
sumPrice: ->
@items.sum (item) -> item.price * item.quantity
Hoặc bất cứ điều gì càng gần càng tốt với điều này, điều này khiến mọi người dễ đọc mã để hiểu điều gì đang xảy ra.
Cho đến nay tôi đã đưa ra:
sumPrice: ->
(items.map (a) -> a.price * a.quantity).reduce (a, b) -> a + b
- chứa quá nhiều chức năng kỳ diệu
- mất descriptiveness
Và:
sumPrice: ->
sum = 0
for item in items
sum += item.price * item.quantity
sum
- có thể được hiểu bởi người mới lập trình viên JS/Cà phê
- cảm thấy một chút ngu ngốc
Tôi yêu CoffeeScript vì vậy tôi hy vọng có một giải pháp tốt hơn với này & kịch bản tương tự mà tôi bỏ lỡ.
Cảm ơn bạn đã thực hiện tổng! – hakunin
@hakunin Bạn được chào đón. BTW, tôi quên đề cập đến rằng 'tổng hợp' có chức năng nhận dạng như tham số mặc định để bạn có thể tổng hợp một danh sách các số dễ dàng' [3, -4, 5] .sum() ':) – epidemian
Tôi thích" hàm được đặt tên "Cách tiếp cận, làm cho mã này sạch hơn và tự tài liệu hơn một đống lớn các cuộc gọi lại. Tôi có thể đi thêm một bước nữa và thêm một bước nữa để tôi có thể 'sumPrices = (t, i) -> t + itemPrice (i); sum = items.reduce (sumPrices, 0) '. –