[Ramda] R.project -- Select a Subset of Properties from a Collection of Objects in Ramda

In this lesson we'll take an array of objects and map it to a new array where each object is a subset of the original. We'll look at multiple ways to accomplish this, refactoring our code into a simple and easy to read function using Ramda's mappick and project functions.

 

Lets say we have an array of objects, we want to only pick the 'name' and 'price' props from each object:

复制代码
const products = [
  {name: 'Jeans', price:80, category: 'clothes'},
  {name: 'Hoodie', price:60, category: 'clothes'},
  {name: 'Jacket', price:120, category: 'clothes'},
  {name: 'Cards', price: 35, category: 'games'},
  {name: 'iPhone', price: 649, category: 'electronics'},
  {name: 'Sauce Pan', price: 100, category: 'housewares'}
  ]

const result = products.map(p => ({name: p.name, price: p.price}))

console.log(result);
复制代码

It works but as we can image that if we need to pick 10 props or even more, then it would be a problem, the code would be hard to read.

 

We can improve this by using Ramda's pick method:

const result = products.map(p => R.pick(['name', 'price'], p))

 

Then we can utilize Ramda automaticlly curry function to improve the code:

const result = products.map(R.pick(['name', 'price']))

 

Then we can extract the bussniess logic into a sprate function to make it resuable:

const getNameAndPrice = R.map(R.pick(['name', 'price']));
const result = getNameAndPrice(products);

 

Since it is a common pattern that "map to each object in array and pick certain props will it",  we can use "R.project":

const getNameAndPrice = R.project(['name', 'price']);
const result = getNameAndPrice(products);

 

posted @   Zhentiw  阅读(308)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2016-03-03 [AngualrJS] Using Angular-Cache for caching http request
2015-03-03 [Javascript] Introduce to Webpack
点击右上角即可分享
微信分享提示