Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么flatMap没有';不删除空数组?_Javascript_Arrays_Reactjs_Function_Flatmap - Fatal编程技术网

Javascript 为什么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

我有一个flatMap函数,用于获取和返回数组中每个项目的数据。如果项没有某些信息,它也会返回一个空数组。因为我使用的是flatMap,所以我希望它会删除所有的空数组,但是完成的数组仍然包含它们

功能:

 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()完全相同,但比单独调用这两个方法效率略高。