Ramda 之 without()
栏目: JavaScript · 发布时间: 6年前
内容简介:若要找出第一個 Array 不在第二個 Array 的 Element,我們會使用VS Code 1.33.1Quokka 1.0.209
若要找出第一個 Array 不在第二個 Array 的 Element,我們會使用 difference() ,若要找出第二個 Array 不在第一個 Array 的 Element 呢 ?
Version
VS Code 1.33.1
Quokka 1.0.209
Ramda 0.26.1
Functional
import { flip, difference } from 'ramda';
let first = [1, 3, 5, 7];
let second = [1, 4, 7];
let without = flip(difference);
console.log(without(first, second));
想知道 second array 哪些 element 不存在於 first array,,若不知道 Ramda 提供了 without() ,其實也可以由 difference() 與 flip() 組合出來。
without()
Value
import { without } from 'ramda';
let first = [1, 3, 5, 7];
let second = [1, 4, 7];
console.log(without(first, second));
其實 Ramda 已經提供了 without() ,可直接使用。
without()
[a] → [a] → [a]
回傳第二個 array 不存在於第一個 array 部分
Object
import { without } from 'ramda';
let first = [
{ firstName: 'Kevin', lastName: 'Yang'},
];
let second = [
{ firstName: 'Sam', lastName: 'Xiao'},
{ firstName: 'Kevin', lastName: 'Yang'},
{ firstName: 'Jimmy', lastName: 'Huang'},
]
console.dir(without(first, second));
若 second array 的 element 為 object,想得知不存在於 first array 的 object 有哪些, without() 依然適用。
ECMAScript 的 === ,對於 object 是 reference equality,但以處理 data 角度而言,這並沒有實質用處,而 without() 比較的是 value equality,也就是 property 相等,就視為兩個 object 相等,這在實務上非常有用
Conclusion
- Ramda 並沒有如同
differenceWith()提供withoutWith(),但也可組合flip()與differenceWith()成為withoutWith() -
without()可輕易找出兩個 array 不重複部分,尤其對於 object 是比較其 value equality,而不是 reference equality,非常實用
Reference
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
深入理解计算机系统(英文版·第2版)
[美] Randal E. Bryant、[美] David R. O'Hallaron / 机械工业出版社 / 2011-1 / 128.00元
本书是一本将计算机软件和硬件理论结合讲述的经典教程,内容覆盖计算机导论、体系结构和处理器设计等多门课程。本书的最大优点是为程序员描述计算机系统的实现细节,通过描述程序是如何映射到系统上,以及程序是如何执行的,使读者更好地理解程序的行为为什么是这样的,以及造成效率低下的原因。 相对于第1版,本版主要是反映了过去十年间硬件技术和编译器的变化,具体更新如下: 1. 对系统的介绍(特别是实际使......一起来看看 《深入理解计算机系统(英文版·第2版)》 这本书的介绍吧!