使用reduce缩短数组

Nor*_*Out 5 javascript

使用reduce查找项目在数组中的次数.该数组可以递归地具有数组.

var foo = [
  1,
  [2, 3, 4], 
  4, [5,6,7], 4
];
Run Code Online (Sandbox Code Playgroud)

bar(foo, 4) 将返回3.

Aᴍɪ*_*ᴍɪʀ 4

尝试使用这个Array.prototype.reduce

var foo = [1, [2, 3, 4], 4, [5, 6, 7], 4];

function f(arr, item) {
  return arr.reduce(function (s, i) {
    if (Array.isArray(i)) return s+f(i, item);
    return s+(i==item?1:0);
  }, 0);
}

console.log(f(foo, 4))
Run Code Online (Sandbox Code Playgroud)

该函数f是一个递归函数。我们循环遍历所有项目并将它们减少到一个数字。该函数也会在所有内部数组上调用,对于非数组项,我们只需检查它们是否等于所需的项。