zoukankan      html  css  js  c++  java
  • [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);
  • 相关阅读:
    [通信] C# TCP实现多个客户端与服务端 数据 与 文件的传输
    [压缩]C#下使用SevenZipSharp压缩解压文本
    [通信] C#多线程Socket-文件传输
    [算法] N 皇后
    【算法】N Queens Problem
    [Eclipse]
    [C/C++] String Reverse 字符串 反转
    [SQL] 获取 Microsoft SQL Server 2008 的数据表结构
    [WIFI] WIFI 破解(初级)
    Unable to extract 64-bitimage. Run Process Explorer from a writeable directory
  • 原文地址:https://www.cnblogs.com/Answer1215/p/6297152.html
Copyright © 2011-2022 走看看