我正在掌握使用除简单的map
或两个以外的函数编程。我有一种情况,我希望能够根据这些对象的特定字段筛选对象数组中的某些元素。这是一个人为的例子,但这里有:执行数组上的函数列表
我有一个字段定义的列表,我想根据他们的标题提取他们两个。
const toSearch = [
{ title: "name", description: "Their name" },
{ title: "age", description: "Their age" },
{ title: "gender", description: "Their gender" }
]
const fieldsToFind = ["name", "age"]
let filterObjects = R.map(R.objOf('title'), fieldsToFind)
let filterFuncs = R.map(R.whereEq(R.__), filterObjects)
let found = R.map(R.filter, filterFuncs)
console.log("Filter objects:", JSON.stringify(filterObjects))
console.log("Filter functions:", JSON.stringify(filterFuncs))
console.log("Found:", found[0](toSearch))
console.log("Found:", found[1](toSearch))
如果我运行这个,最后输出的是toSearch
两个要素,我正在寻找,但它不是完全整齐。我一直试图让另一个map
工作来手动执行found
元素,但我也觉得,即使导致到那一点,我正在采取过于迂回的路线。
虽然这是一个人为的例子,是否有一个完美的方式来实现这一功能风格?
最后一个很棒!只是我正在寻找的那种整洁! – chooban
是的,我真的很喜欢['where'](http://ramdajs.com/docs/#where)读取! –