簡體   English   中英

Ramda-過濾對象數組-咖喱FN參數順序

[英]Ramda - filtering array of objects - curried fn parameters order

我想在ramda.js中實現過濾函數生成器。 在我看來,它應該這樣運行:

var a = filterFn(arrOfObjects)
var b = a(keyName)
var c = b(value)

實現此順序的參數非常重要,因為可以使用不同的條件過濾同一數組。

目前,我有以下代碼:

var g = R.curryN(2, R.compose(R.filter(R.__)(R.__), R.propEq))
g('classId')(2)(input)

但我想將“輸入”作為第一個參數:

g(input)('classId')(1)

這是一個ramda REPL: 代碼

提前致謝!

我只會用這樣的東西:

R.curry((list, name, value) => R.filter(R.propEq(name, value), list));

Ramda不包括任意的參數重新排序機制,僅包含flip__占位符

您實際上並不希望此功能沒有意義:)

var g = R.compose(
  R.curryN(2, R.compose)(R.__, R.propEq),
  R.curryN(2, R.compose),
  R.flip(R.filter)
)

或者至少確保未來的維護者永遠不會知道您的住所:)

如何獲得像這樣的可怕的東西。

首先,編寫功能明確的版本。

list => prop => value => R.filter(R.propEq(prop)(value))(list)

要么

list => prop => value = R.flip(R.filter)(list)(R.propEq(prop)(value))

然后轉到Pointfree.io並使用一些haskell語法\\xyz -> fx (gyz) 其中f如果flip filtergpropEq

工具將產生(. g) . (.) . f (. g) . (.) . f

然后,將其轉換回javascript,以使將來的維護人員哭泣。 演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM