使用.filter返回数组中的特定元素?

时间:2016-01-26 20:40:31

标签: javascript

我试图在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);

但是arrayThatHas5thElementsA ...

完全相同

希望这是有道理的。

谢谢。

2 个答案:

答案 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);
}, []);