繁体   English   中英

为什么 JS 编译器不识别这个对 Array.prototype.filter 的调用

[英]Why doesn't JS complier recognize this call to Array.prototype.filter

我想弄清楚为什么我对 .prototype.filter 的调用给了我一个TypeError: curr.filter is not a function

const intersection = (arrays) => {
  return arrays.reduce((acc, curr) => {
    return curr.filter(el => acc.includes(el));
  });
};

console.log(intersection([5, 10, 15, 20], [15, 88, 1, 5, 7], [1, 10, 15, 5, 20]));

据我所知,我声明了一个函数const intersection ,它接受arrays ,然后返回调用arrays.reduce的结果,它“减少”过滤当前值并创建一个新数组的结果,该数组包括累加器acc所有实例,包括当前价值curr

由于过滤器在运行时创建了一个新数组,我认为这可以正常工作,但事实并非如此。 我没有看到什么?

使用数组rest parameter将所有参数作为数组获取。 在给定的代码中,您只采用第一个参数并忽略其余参数。

尝试这个。

 const intersection = (...arrays) => { console.log("arrays: ", arrays); return arrays.reduce((acc, curr) => { return curr.filter(el => acc.includes(el)); }); }; console.log("Result:" , intersection([5, 10, 15, 20], [15, 88, 1, 5, 7], [1, 10, 15, 5, 20]));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM