Ramda 之 includes()
栏目: JavaScript · 发布时间: 7年前
内容简介:實務上我們常需判斷某一個值是否存在於 Array 內,若存在則傳回VS Code 1.31.1Quokka 1.0.212
實務上我們常需判斷某一個值是否存在於 Array 內,若存在則傳回 true ,若不存在則傳回 false ,對於簡單的需求,我們會希望不要傳入 Callback,直接傳入 Data 即可。
Version
VS Code 1.31.1
Quokka 1.0.212
Ramda 0.26.1
Imperative
let data = [1, 2, 3];
let includes = arg => arr => {
for(let elem of arr) {
if (elem === arg) return true;
}
return false;
}
console.log(includes(1)(data));
建立 includes() ,imperative 會使用 for loop 搭配 if 判斷,若找到就直接回傳 true 結束,若都找不到則回傳 false 。
Array.prototype.includes()
let data = [1, 2, 3]; console.log(data.includes(1));
Array.prototype 有內建 includes() ,直接傳入 data 即可。
就功能而言兩者都一樣,但 Array.prototype.includes() 屬 OOP 風格,為 data 的 method,而 includes() 為 FP 風格,data 以 argument 傳入 function,且為最後一個 argument,方便 point-free
Functional
import { any } from 'ramda';
let data = [1, 2, 3];
let includes = arg => any(x => x === arg);
console.log(includes(1)(data));
其實我們大可不必自己寫 for loop,可藉助 Ramda 的 any() 實現出 includes() 。
any()
(a -> Boolean) -> [a] -> Boolean
判斷符合條件的 data 是否存在於 array
includes()
Primitive
import { includes } from 'ramda';
let data = [1, 2, 3];
console.log(includes(1)(data));
事實上 Ramda 已經提供 includes() ,可直接使用。
includes()
a → [a] → Boolean
判斷 data 是否存在於 array
a : 欲判斷的 data
[a] :data 為 array
Boolean :回傳比較結果
Object
import { includes } from 'ramda';
let data = [
{ title: 'FP in JavaScript', price: 100 },
{ title: 'RxJS in Action', price: 200 },
{ title: 'Speaking JavaScript', price: 300 }
];
console.log(includes({ title: 'FP in JavaScript', price: 100 })(data));
includes() 也可判斷 object 是否存在於 array,值得注意的是 includes() 使用 equals() 判斷,而非 === ,比較的是 object property,而非 object reference。
import { includes } from 'ramda';
let data = [
{ title: 'FP in JavaScript', price: 100 },
{ title: 'RxJS in Action', price: 200 },
{ title: 'Speaking JavaScript', price: 300 }
];
console.log(data.includes({ title: 'FP in JavaScript', price: 100 }));
若使用 Array.prototype.includes() ,比較的是 object reference,明顯與 includes() 不同。
對於 primitive, includes() 與 Array.prototype.includes() 完全相同;但對於 object,則兩者不同
String
import { includes } from 'ramda';
let data = 'FP in JavaScript';
console.log(includes('JavaScript', data));
includes() 除了用在 array,也可以用在 string 。
let data = 'FP in JavaScript';
console.log(data.includes('JavaScript'));
若用在 string ,則與 String.prototype.includes() 完全相同。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Practical Algorithms for Programmers
Andrew Binstock、John Rex / Addison-Wesley Professional / 1995-06-29 / USD 39.99
Most algorithm books today are either academic textbooks or rehashes of the same tired set of algorithms. Practical Algorithms for Programmers is the first book to give complete code implementations o......一起来看看 《Practical Algorithms for Programmers》 这本书的介绍吧!