【问题标题】:Javascript - flatMap method over array - (flatMap is not a function)Javascript - 数组上的 flatMap 方法 - (flatMap 不是函数)
【发布时间】:2019-08-27 01:55:27
【问题描述】:

根据 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

【问题讨论】:

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


【解决方案1】:

我在用 jest 测试时得到了这个,这是因为 flatmap 只是 part of node 11 而我使用的是节点 10。

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

我想也有一些浏览器不会有这个。因此,我还将在我的应用程序导入中的某处放置该 require 行。

【讨论】:

    【解决方案2】:

    表示你使用的浏览器或其他开发环境不支持Array.prototype.flatMap(目前Edge和IE都不支持)。可以使用表here

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

    【讨论】:

    • 在我的情况下,我只会使用自制软件进行升级,对吗? brew upgrade node 对吗?
    • 更简单(不需要 Homebrew)-npm install n -g(参见this answer)。
    • 只需卸载 node 并使用 nvm 重新安装它:github.com/creationix/nvm
    【解决方案3】:

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

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

    顺便说一句,它在应用于多维数组时很有用!

    【讨论】:

    • 欣赏它,我在 atom 上运行它并相信我将它更新为最新版本的节点,但仍然无法正常工作。
    • 我建议在节点上开发时使用:github.com/creationix/nvm :)
    猜你喜欢
    • 2020-10-16
    • 1970-01-01
    • 2021-03-02
    • 2020-08-17
    • 1970-01-01
    • 2020-07-22
    • 2017-09-19
    • 2019-03-05
    相关资源
    最近更新 更多