Ứng dụng của Currying Function
Bài viết được sự cho phép của tác giả Lưu Bình An
Currying function là một kỹ thuật viết function, thay vì nhận nhiều tham số cùng lúc, thành nhiều function nhỏ, trên từng function nhỏ cho ta truyền vào tuần tự các tham số
Có thể đọc lại bài này của mình
const add = (a, b) => a + b
console.log(add(1,2))
// viết thành currying
const add = a => b => a + b
console.log(add(1)(2))
Câu hỏi là tại sao mình lại viết như thế này ta?
Ví dụ chúng ta có một mảng
const list = [
{ id: 1, name: 'Steve', email: '[email protected]' },
{ id: 3, name: 'Pamela', email: '[email protected]' },
{ id: 4, name: 'Liz', email: '[email protected]' }
]
Chúng ta muốn xóa phần tử có name=John
const noJohn = list.filter(item => item.name !== 'John')
Tưởng tượng chúng ta có function filter kiểu như vậy ở nhiều nơi trong code, để đảm bảo DRY, chúng ta sẽ viết riêng một function
Xem thêm nhiều việc làm Javascript mới trên TopDev
const filtering = item => item.name !== name
const filterByName = (list, name) => list.filter(filtering)
Tuy nhiên lỗi nè, const filtering = item => item.name !== name
làm sao biết được name
? Currying đến giải cứu đây
// curring
const filtering = (name) => (item) => item.name !== name
const filterByName = (list, name) =>
list.filter(filtering(name))
Chuyện gì đã xảy ra? Có thể viết lại tường minh hơn để chúng ta dễ hình dung, không dùng arrow function
function filterByName(list, name) {
return list.filter(function(nameToFilter) {
return function(item) {
return item.name !== nameToFilter
}
// truyền `name` giống như thời jQuery
}(name))
}
Phiên bản Currying đỉnh của chóp
const filter = predicate => array => array.filter(predicate)
const filterBy = propertyName => propertyValue => filter(item[propertyName] => propertyValue)
// sử dụng
const filterByName = filterBy('name')
const filterByNameJohn = filterByName("John")
console.log(filterByNameJohn(list))
A practical example of how to use Currying in Javascript
Bài viết gốc được đăng tải tại vuilaptrinh.com
Có thể bạn quan tâm:
- Tìm hiểu Currying function trong Javascript
- Higher Order Functions trong Scala
- Functional programing nên và không nên
Xem thêm Việc làm CNTT hấp dẫn trên TopDev
- B BenQ RD Series – Dòng Màn Hình Lập Trình 4k+ Đầu Tiên Trên Thế Giới
- i iOS 18 có gì mới? Có nên cập nhật iOS 18 cho iPhone của bạn?
- G Gamma AI là gì? Cách tạo slide chuyên nghiệp chỉ trong vài phút
- P Power BI là gì? Vì sao doanh nghiệp nên sử dụng PBI?
- K KICC HCMC x TOPDEV – Bước đệm nâng tầm sự nghiệp cho nhân tài IT Việt Nam
- T Trello là gì? Cách sử dụng Trello để quản lý công việc
- T TOP 10 SỰ KIỆN CÔNG NGHỆ THƯỜNG NIÊN KHÔNG NÊN BỎ LỠ
- T Tìm hiểu Laptop AI – So sánh Laptop AI với Laptop thường
- M MySQL vs MS SQL Server: Phân biệt hai RDBMS phổ biến nhất
- S SearchGPT là gì? Công cụ tìm kiếm mới có thể đánh bại Google?