Ramda 之 pick()

栏目: JavaScript · 发布时间: 5年前

内容简介:實務上最常使用的WebStorm 2018.3.3Quokka 1.0.134

實務上最常使用的 map() ,就是從 Object 眾多 Property 中,僅擷取部分 Property,Ramda 提供了 pick() 達成此功能。

Version

WebStorm 2018.3.3

Quokka 1.0.134

Ramda 0.26.1

Non Point-free

import { map } from 'ramda';

const data = [
  { id: 1, title: 'Functional Programming in JavaScript', year: 2016 },
  { id: 2, title: 'RxJS in Action', year: 2017 },
  { id: 3, title: 'Speaking JavaScript', year: 2014 },
];

const getBooks = map(x => ({ title: x.title, year: x.year }));
console.dir(getBooks(data));

若我們只要 titleyear 兩個 property,可直接使用 Arrow Function。

但因為 callback 還有 x 參數,所以並不是 Point-free。

Ramda 之 pick()

Point-free

import { map, pick } from 'ramda';

const data = [
  { id: 1, title: 'Functional Programming in JavaScript', year: 2016 },
  { id: 2, title: 'RxJS in Action', year: 2017 },
  { id: 3, title: 'Speaking JavaScript', year: 2014 },
];

const getBooks = map(pick(['title', 'year']));
console.dir(getBooks(data));

若想要 map() 的 callback 也 Point-free,可在搭配 pick() ,傳入 property 的 array 即可。

pick()

[k] -> {k: v} -> {k: v}

從一個 object 中抽取部分 property 成為新的 object

[k] :要抽取的 property

{k: v} :data 為 object

{k: v} : 回傳新的 object

Ramda 之 pick()

Conclusion

  • pick() 使得 map() 的 callback 更為精簡,這就是 Point-free 的魔力

Reference

Ramda , map()

Ramda , pick()


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

未来版图

未来版图

麻省理工科技评论 / 人民邮电出版社 / 2018-5-1 / CNY 69.80

《麻省理工科技评论》作为世界上历史悠久、影响力极大的技术商业类杂志,每年都会依据公司的科技领军能力和商业敏感度这两个必要条件,从全球范围内选取50家未来可能会成为行业主导的聪明公司。 这些聪明公司,并非都是行业巨头,甚至专利数量、公司所在地以及资金规模都不在考察范围内。 这些公司是“高精尖科技创新”与“能够保证公司利益* 大化的商业模式”的完 美融合。无论公办私营,无关规模大小,这些遍布全球......一起来看看 《未来版图》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具