Javascript-数组上的flatMap方法-(flatMap不是函数)

时间:2019-04-05 07:53:41

标签: javascript arrays node.js ecmascript-6 flatmap

根据Mozilla开发人员网站:

The flatMap() method first maps each element using a mapping function, then flattens the result into a new array. It is identical to a map followed by a flat of depth 1, but flatMap is often quite useful, as merging both into one method is slightly more efficient.

示例:

let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];

const flatMap = arr.flatMap(x => x);
console.log(flatMap);

TypeError: arr.flatMap() is not a function

为什么返回此错误?

编辑

我正在通过Atom文本编辑器运行此程序,并使用HomeBrew使用brew upgrade node将其更新为最新版本,但它仍然给我同样的错误。

我也尝试过npm install n -g

3 个答案:

答案 0 :(得分:13)

在进行开玩笑的测试时,我得到了这个消息,这是因为flatmappart of node 11,并且我正在使用节点10。

作为一种解决方法,我在require('core-js/stable');中添加了setupTests.ts

我想也有一些浏览器也没有这个功能。因此,我还将在我的应用程序导入中的某处放置要求行。

答案 1 :(得分:2)

您的浏览器似乎不支持flatMap。 这里是受支持的浏览器的完整列表:https://caniuse.com/#search=flatMap

如果您真的想使用它,这里是一个polyfill,它将向ES3提供支持:https://www.npmjs.com/package/array.prototype.flatmap

顺便说一句,将其应用于多维数组时非常有用!

答案 2 :(得分:1)

这表示您正在使用不支持Array.prototype.flatMap的Web浏览器或其他开发环境(当前Edge和IE不支持)。 CanIUse表here

还要注意,它主要用于多维数组(以避免链接mapflat,因此也链接flatMap)。