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;
sublist => {
sublist.map(person => person.name)
return sublist
}
上面的代码调用
.map
,创建一个新数组,但随后对该数组完全不执行任何操作。然后,它返回原始的未映射列表。
如果您希望此代码的行为与第二个代码示例相同,那么您需要返回映射的数组。
sublist => {
return sublist.map(person => person.name)
}