【问题标题】:JavaScript flatMap() error: "flatMap mapper function is not callable"JavaScript flatMap() 错误:“flatMap 映射器函数不可调用”
【发布时间】:2020-10-16 01:35:06
【问题描述】:

我正在尝试使用以下代码展平数组,但是当我使用 .flatMap() 时出现错误:

Uncaught TypeError: flatMap mapper function is not callable
    at Array.flatMap (<anonymous>)
const data = [
        { key1: 5, key3: 2 },
        { key1: 2, key3: 1 },
        { key1: 3, key3: 2 },
        { key2: 8 },
        { key1: 5, key3: 2 },
      ];
var allKeys = data.map(r => Object.keys(r))
// [
//   [ 'key1', 'key3' ],
//   [ 'key1', 'key3' ],
//   [ 'key1', 'key3' ],
//   [ 'key2' ],
//   [ 'key1', 'key3' ]
// ]
allKeys.flatMap();

【问题讨论】:

  • 因为 flatMap 需要函数作为参数。只需使用flat()
  • 你读过flatMapdocs吗?

标签: javascript flatten


【解决方案1】:

在这种情况下,我应该使用flat() 而不是flatMap()。以下按预期工作。

const data = [
    { key1: 5, key3: 2 },
    { key1: 2, key3: 1 },
    { key1: 3, key3: 2 },
    { key2: 8 },
    { key1: 5, key3: 2 },
];
var allKeys = data.map(r => Object.keys(r))
console.log(allKeys.flat());

【讨论】:

  • 请使用您问题上的编辑链接添加其他信息。 Post Answer 按钮应仅用于问题的完整答案。 - From Review
【解决方案2】:

您可以使用flatMap 代替map 更简洁,这样就无需在之后调用.flat(),因为它只是.map(...).flat() 的简写。同样,您可以直接将Object.keys 作为flatMap 的回调传递,因为它会忽略除给出的第一个参数之外的所有参数。

const data = [
        { key1: 5, key3: 2 },
        { key1: 2, key3: 1 },
        { key1: 3, key3: 2 },
        { key2: 8 },
        { key1: 5, key3: 2 },
      ];
var allKeys = data.flatMap(Object.keys)
console.log(allKeys);

【讨论】:

    猜你喜欢
    • 2019-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    • 2020-08-17
    • 2019-07-13
    相关资源
    最近更新 更多