點燈坊

失くすものさえない今が強くなるチャンスよ

使用 discard() 移除 Array 中 Element

Sam Xiao's Avatar 2020-09-03

若有指定 Value 要從 Array 中刪除,可使用 Wink-fp 的 discard() 直接從 Array 中刪除。

Version

macOS Catalina 10.15.6
Wink-fp 1.23.8

Functional

import { pipe, of, without } from 'ramda'

// discard :: a -> [a] -> [a]
let discard = pipe(of, without)

let data = [1, 2, 3]

discard(2)(data) // ?
  • 使用 of() 將 value 包進 Array

  • 使用 without() 將兩 Array 相減

discard000

Primitive

import { discard } from 'wink-fp'

let data = [1, 2, 3]

discard(2, data) // ?

Wink-fp 已經提供 discard() 可直接使用。

discard()
a -> [a] -> [a]
移除 Array 中指定 value

a:提供要刪除的 value

[a]:data 為 Array

[a]:回傳刪除後 Array

discard001

Object

import { discard } from 'wink-fp'

let data = [
  { title: 'FP in JavaScript', price: 100 },
  { title: 'RxJS in Action', price: 200 },
  { title: 'Speaking JavaScript', price: 300 }
]

let obj = { title: 'RxJS in Action', price: 200 }

discard(obj, data) // ?

discard() 也能用於 Object Array。

discard002

Conclusion

  • discard() 底層使用了 Ramda 的 without(),所以必須先使用 of() 將 value 轉成 Array

Reference

Ramda, without()
Ramda, of()