Ramda 之 pick()

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

内容简介:實務上最常使用的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()


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

查看所有标签

猜你喜欢:

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

程序员的数学2

程序员的数学2

平冈和幸、堀玄 / 陈筱烟 / 人民邮电出版社 / 2015-8-1 / CNY 79.00

本书沿袭《程序员的数学》平易近人的风格,用通俗的语言和具体的图表深入讲解程序员必须掌握的各类概率统计知识,例证丰富,讲解明晰,且提供了大量扩展内容,引导读者进一步深入学习。 本书涉及随机变量、贝叶斯公式、离散值和连续值的概率分布、协方差矩阵、多元正态分布、估计与检验理论、伪随机数以及概率论的各类应用,适合程序设计人员与数学爱好者阅读,也可作为高中或大学非数学专业学生的概率论入门读物。一起来看看 《程序员的数学2》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器