Javascript 为什么flatMap没有';不删除空数组?
我有一个flatMap函数,用于获取和返回数组中每个项目的数据。如果项没有某些信息,它也会返回一个空数组。因为我使用的是flatMap,所以我希望它会删除所有的空数组,但是完成的数组仍然包含它们 功能:Javascript 为什么flatMap没有';不删除空数组?,javascript,arrays,reactjs,function,flatmap,Javascript,Arrays,Reactjs,Function,Flatmap,我有一个flatMap函数,用于获取和返回数组中每个项目的数据。如果项没有某些信息,它也会返回一个空数组。因为我使用的是flatMap,所以我希望它会删除所有的空数组,但是完成的数组仍然包含它们 功能: Promise.all( array.flatMap(async (item) => { const fetchedData = await fetch(`${item.url}`) .then(response => res
Promise.all(
array.flatMap(async (item) => {
const fetchedData = await fetch(`${item.url}`)
.then(response => response.json())
.then(data => data.stats.length ? data : null);
return fetchedData ? { ...fetchedData } : [];
})).then(data => console.log(data));
另外,当我使用console.log(data.flat())而不是console.log(data)记录数据时,所有空数组都将被删除,但这将需要再次遍历数组。你知道为什么flatMap不能自己完成吗?
获取数据?{…fetchedData}:[]
这看起来有点奇怪,根据fetchedData
返回对象或数组,这是预期的吗?我想是的,这是flatMap的语法。对于返回数字或空数组且正在删除该空数组的数字也适用。如果在已flatMap
ed数组上调用flat()
,则会将该空数组删除的原因再展平一级arrays@pilchard是的,但这就是flatMap
应该做的,不是吗?根据…只需一级,然后将结果展平一级。它与map()后跟深度为1的flat()完全相同,但比单独调用这两个方法效率略高。