带有一行箭头功能混乱的flatMap

问题描述 投票:0回答:1

flatMap 中的第一个箭头函数不能满足我的需要,第二个箭头函数可以。我需要将数据转换为平面名称数组

['John', 'Jane', 'Bob']

const data = [
    [{ name: 'John', age: 25 }, { name: 'Jane', age: 30 }],
    [{ name: 'Bob', age: 40 }]
    ];
    
let mappedData = data.flatMap(sublist => {
    sublist.map(person => person.name)
    return sublist
})

console.log(mappedData);


mappedData = data.flatMap(sublist => 
    sublist.map(person => person.name)
)
console.log(mappedData);

但是为什么呢?我原以为这两个箭头函数是相同的,第二个箭头函数只是删除了正文大括号和单词“return”——隐含了返回。

以下两个箭头功能相同。那么为什么我在 flatMap 中的两个箭头函数没有给出相同的结果?

(a) => {
  return a + 100;
};

// 2. Remove the body braces and word "return" — the return is implied.
(a) => a + 100;
javascript arrow-functions
1个回答
0
投票
sublist => {
    sublist.map(person => person.name)
    return sublist
}

上面的代码调用

.map
,创建一个新数组,但随后对该数组完全不执行任何操作。然后,它返回原始的未映射列表。

如果您希望此代码的行为与第二个代码示例相同,那么您需要返回映射的数组。

sublist => {
  return sublist.map(person => person.name)
}
© www.soinside.com 2019 - 2024. All rights reserved.