Ramda 之 without()
栏目: JavaScript · 发布时间: 4年前
内容简介:若要找出第一個 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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
游戏编程权威指南
Mike McShaffry 麦克沙福瑞、David “Rez” Graham 格雷海姆 / 师蓉、李静、李青翠 / 人民邮电 / 2016-3 / 99.00元
全书分为4个部分共24章。首部分是游戏编程基础,主要介绍了游戏编程的定义、游戏架构等基础知识。 第二部分是让游戏跑起来,主要介绍了初始化和关闭代码、主循环、游戏主题和用户界面等。 第三部分是核心游戏技术,主要介绍了一些*为复杂的代码 示例,如3D编程、游戏音频、物理和AI编程等。 第四部分是综合应用,主要介绍了网络编程、多道程序设计和用C#创建工具等,并利用前面所讲的 知识开发出......一起来看看 《游戏编程权威指南》 这本书的介绍吧!