Ramda is a library that contains many utility functions to support JavaScript programming. If you have heard of or used lodash before, you can imagine that the functionality of Ramda is similar. If you have never heard of or used either library, keep reading.
Let's consider a simple problem: getting the "name" property from an object person
.
const person = {
name: "Coffee",
age: 18,
}
Simple, right? We just need to call person.name
and we immediately get the data "Coffee". You can use this approach to quickly retrieve data, but what if person
has a value of null
or undefined
? It's best to wrap it in a utility function for reuse.
Now let's make it more flexible by writing a function specifically for retrieving an object property.
function get(obj, attr) {
return obj[attr];
}
Now, we can call get(person, "name")
to get the data "Coffee".
However, this function still needs improvement. If obj
is undefined or null, or simply not an object, the get
function will throw an error. You can check some conditions before getting the value, but that would just take more time and effort on your part.
Understanding this issue, Ramda has provided a function named prop
specifically for getting the value of a property.
const R = require('ramda');
R.prop("name", person); // Coffee
// or
R.prop("name")(person); // Coffee
// or
const getName = R.prop("name");
getName(person); // Coffee
"Oh, if that's all, why do people like using it?" Because prop
is just one of many functions that Ramda supports. There are many other functions that provide powerful features which you don't have to spend time rewriting. Furthermore, they can be easily combined with each other to become even more "boss".
For example, combining Ramda functions to filter the objects in the people
list that have "age" > 18 and sorting them in descending order by "age".
R.pipe(
R.filter(
R.pipe(R.prop('age'), R.lt(18)),
),
R.sortWith([
R.descend(R.prop('age')),
])
)(people)
At first glance, the above code may be long and difficult to understand. To understand and apply Ramda, the only way is to view the descriptions of all the functions on its homepage. Moreover, you also need to understand how curry functions work.
As mentioned at the beginning of the article, Ramda is a collection of general-purpose utility functions suitable for many problems. One difference from other similar utility libraries is that Ramda follows a functional programming style. Therefore, Ramda is often used in projects that adopt functional programming.
Ramda is designed in a functional programming style, where immutability and pure functions are its core values. This helps you handle code with simplicity and clarity.
Most functions in Ramda support currying. This allows you to easily create new functions from existing ones by not providing their final arguments.
The parameters of functions are ordered to facilitate the application of curried functions. The final data is usually requested last.
This article serves as an introduction to the Ramda utility library for functional programming in JavaScript. Ramda provides many functions focused on solving small problems, and you can easily combine them to create a powerful program.
When Ramda becomes a common language in many projects, it will make deployment and maintenance easier for everyone.
5 profound lessons
Every product comes with stories. The success of others is an inspiration for many to follow. 5 lessons learned have changed me forever. How about you? Click now!
Subscribe to receive new article notifications
Comments (1)