我正在掌握使用函数式编程而不是简单的一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
手动执行元素,但我也觉得即使在这之前我也采取了一条过于迂回的路线。
虽然这是一个人为的例子,但有没有一种更简洁的方法可以在功能风格中实现这一点?