zoukankan      html  css  js  c++  java
  • [Ramda] Pick and Omit Properties from Objects Using Ramda

    Sometimes you just need a subset of an object. In this lesson, we'll cover how you can accomplish this using Ramda's pick and omit functions, as well as the pickAll and pickBy variants of pick.

    const R = require('ramda');
    
    const {pick, prop, pickBy, pickAll, props, omit, compose, not, curry} = R;
    
    const log = curry((desc, x) => R.tap(() => console.log(desc, JSON.stringify(x, null, 2)), x));
    
    const product = {
        name: 'widget',
        price: 10,
        shippingWeight: 20,
        shippingMethod: 'UPS'
    };
    
    // get one single prop from a large object
    const getByProp = pick(['name']); // { name: 'widget' }
    
    // different from R.prop
    const getPropVal = prop('name'); // 'widget'
    
    const getByProps = pickAll(['name', 'price']); // { name: 'widget', price: 10 }
    
    const getPropsVals = props(['name', 'price']); // [ 'widget', 10 ]
    
    const getByPickBy = pickBy((val, key) => {
        // Only get prop if
        // val: is number
        // key contains 'shipping'
        return Number(val) && key.includes('shipping');
    });  // { shippingWeight: 20 }
    
    const omitShippingProps = omit(['shippingWeight', 'shippingMethod']); // { name: 'widget', price: 10 }
    
    // another way to omit props by conditions
    const notToPickByShippingProps = pickBy((val, key) => !key.includes('shipping')); // { name: 'widget', price: 10 }
    
    
    const result = notToPickByShippingProps(product);
    console.log(result);
  • 相关阅读:
    D
    hdu2376 Average distance (树形dp)
    hdu2376 Average distance (树形dp)
    选拔赛——旅游
    选拔赛——旅游
    cf 990c(思维+括号匹配)
    cf 990c(思维+括号匹配)
    Garland CodeForces
    Garland CodeForces
    Sherlock and his girlfriend CodeForces
  • 原文地址:https://www.cnblogs.com/Answer1215/p/6481036.html
Copyright © 2011-2022 走看看