Ramda 之 applySpec()

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

内容简介:Ramda 之WebStorm 2018.3.3Quokka 1.0.136

Ramda 之 pick() 只能擷取 Object 的部分 Property,且名稱不能改變,若連名稱也要改變,就要改用 applySpec()

Version

WebStorm 2018.3.3

Quokka 1.0.136

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 => ({ name: x.title, since: x.year }));
console.dir(getBooks(data));

若我們只要 titleyear 兩個 property,但名稱要改成 namesince ,若使用 Arrow Function,我們可以直接指定新的 property 名稱。

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

Ramda 之 applySpec()

Point-Free

import { map, applySpec, prop } 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(applySpec({
  name: prop('title'),
  since: prop('year'),
}));
console.dir(getBooks(data));

Ramda 提供了 applySpec() ,用來建立新 object,並使用 prop() 取得原 object 的 property。

applySpec()

{k: ((a, b, …, m) → v)} → ((a, b, …, m) → {k: v})

依照 spec object 建立新的 object

{k: ((a, b, …, m) → v)} :新的 spec object,其 value 為 function

(a, b, …, m) :餐數會套用到所有 value function

{k: v} :回傳新的 object

applecSpec() 配合 prop() ,由於 Point-free,可讀性非常高,很明確看到新 property 與原 property

Ramda 之 applySpec()

Conclusion

  • applySpec() 的 signature 看起來很嚇人,但只要靜下心看,其實也還好,且實際使用時,程式碼可讀性非常高

Reference

Ramda , map()

Ramda , applySpec()

Ramda , prop()


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

查看所有标签

猜你喜欢:

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

计算统计

计算统计

Geof H.Givens、Jennifer A.Hoeting / 王兆军、刘民千、邹长亮、杨建峰 / 人民邮电出版社 / 2009-09-01 / 59.00元

随着计算机的快速发展, 数理统计中许多涉及大计算量的有效方法也得到了广泛应用与迅猛发展, 可以说, 计算统计已是统计中一个很重要的研究方向. 本书既包含一些经典的统计计算方法, 如求解非线性方程组的牛顿方法、传统的随机模拟方法等, 又全面地介绍了近些年来发展起来的某些新方法, 如模拟退火算法、基因算法、EM算法、MCMC方法、Bootstrap方法等, 并通过某些实例, 对这些方法的应用进行......一起来看看 《计算统计》 这本书的介绍吧!

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

Markdown 在线编辑器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具