内容简介:Ramda 0.26.1簡單的需求,想找到
find() 為 Ramda 常用的 Operator,常搭配 propEq() 與 equals() Operator 一併使用。
Version
Ramda 0.26.1
Imperative
const books = [
{id: 1, title: 'Functional Programming in JavaScript'},
{id: 2, title: 'RxJS in Action'},
{id: 3, title: 'Speaking JavaScript'},
];
const findBookById = (id, data) => {
for(let item of data)
if (item.id === id) return item;
};
const result = findBookById(1, books);
console.log(result);
簡單的需求,想找到 id 為 1 的 book object。
Imperative 會使用 for loop 搭配 if 判斷,若 id 找到就 return book object。
Array.prototype
const books = [
{id: 1, title: 'Functional Programming in JavaScript'},
{id: 2, title: 'RxJS in Action'},
{id: 3, title: 'Speaking JavaScript'},
];
const findBookById = (id, data) =>
data.find(x => x.id === id);
const result = findBookById(1, books);
console.log(result);
Array.prototype 有內建 find() ,只要傳入 Arrow Function 即可。
Ramda
import { find, propEq } from 'ramda';
const books = [
{id: 1, title: 'Functional Programming in JavaScript'},
{id: 2, title: 'RxJS in Action'},
{id: 3, title: 'Speaking JavaScript'},
];
const finder = id => propEq('id', id);
const findBookById = (id, data) =>
find(finder(id), data);
const result = findBookById(1, books);
console.log(result);
Ramda 當然也有內建 find() ,其 signature 為
find()
(a → Boolean) → [a] → a | undefined
第一個參數為 a -> Boolean function,也就是 x => x.id === id 。
第二個參數為 [a] ,也就是 array。
若找到回傳為 a ,找不到回傳 undefined 。
第二個參數要自行傳入 Arrow Function 亦可,Ramda 特別提供 propEq() HOF 產生這類 Arrow Function。
propEq()
String -> a -> Object -> Boolean
第一個參數 String 為 object 的 property。
第二個參數 a 為要找的資料。
回傳為 Object -> Boolean ,也就是 find() 需要的 Arrow Function。
Q : propEq() 只適用於 array 內為 object,若為一般 value 呢 ?
import { find, equals } from 'ramda';
const data = [1, 2, 3];
const result = find(equals(1), data);
console.log(result);
Array 內若為一般 value,callback 就必須使用 equals() 。
equals()
a -> b -> Boolean
第一個參數 a 為要找的資料。
回傳 b -> Boolean ,也就是 find() 需要的 Arrow Function。
Conclusion
-
find()為 Ramda 常用的 operator,其 callback 可搭配propEq()與equals()產生
以上所述就是小编给大家介绍的《Ramda 之 find()》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python语言程序设计基础(第2版)
嵩天、礼欣、黄天羽 / 高等教育出版社 / 2017-2 / 39
本书提出了以理解和运用计算生态为目标的Python语言教学思想,不仅系统讲解了Python语言语法,同时介绍了从数据理解到图像处理的14个Python函数库,向初学Python语言的读者展示了全新的编程语言学习路径。 全书一共设计了25个非常具有现代感的实例,从绘制蟒蛇、理解天天向上的力量到机器学习、网络爬虫,从文本进度条、统计名著人物重要性到图像手绘效果、雷达图绘制,绝大多数实例为作者原创......一起来看看 《Python语言程序设计基础(第2版)》 这本书的介绍吧!