我试图在javascript中学习一些函数式编程原理,但遇到了一些问题。我理解迭代方法(只是for循环),但我想知道是否有函数式编程风格的解决方案。
假设我们有一个数组A
,其中A
的每个元素都是另一个数组,让我们调用这些元素a
:
A: [ Array[28], Array[28], ... ], where a_1..a_n is an array of size 28
现在说我只想5th element
内的a
(所以a[4]
)。
如何使用.map, .filter
等更高阶函数执行此操作?
我已经尝试了一种方法:
function myMethodThatReturns5thElem(n) {
return n[4];
}
var arrayThatHas5thElements = A.filter(myMethodThatReturns5thElem);
但是arrayThatHas5thElements
与A
...
希望这是有道理的。
谢谢。
答案 0 :(得分:1)
arr.filter(callback)
回调功能:
返回 true 以保留元素,否则返回 false 。
所以这意味着你的函数arrayThatHas4thElement
应该在item为第四个元素时返回true
回调函数接收3个参数:
value
元素index
元素您可以使用第二个参数来评估您要查找的内容。
答案 1 :(得分:0)
您希望.map
返回数组的特定部分:
var subset = A.map(function(inner) {
return inner[4];
});
如果你想要一个单独的数组 - 而不是一堆带有1个元素的内部数组 - 只需将结果展平:
var subsetFlattened = A.map(function(inner) {
return inner[4];
}).reduce(function(p, c, i, a) {
return p.concat(c);
}, []);