首页 > 解决方案 > 嵌套在 parentArray.map() 中的 Javascript childArray.filter() 没有过滤

问题描述

我想将更新后的数组返回到 state,所以我使用带有过滤器的 map,如下所示:

state.assignmentClusters.map(cluster => {
                cluster.files.forEach(file => {
                    file.motifList.filter(motif =>{
                        return motif.motif_id !== state.motifIdToDelete;
                    });
                });
            });

因为我需要返回一个数组,所以我map()在第一个数组上使用,第二个(文件)我只是遍历它而不期望改变任何东西,所以我使用forEach()并在最后一个深度,我filter()用来返回所有图案除了他们的 id 等于的那些state.motifIdToDelete (仅供参考,两个 ID 都是字符串)。

PS,这段代码在一个 Vue 变异函数中,它允许我改变状态(就像 react 中的 reducer)。

我在这里做错了什么?

谢谢,伙计。

标签: javascript

解决方案


我已经以不同的方式解决了这个问题,但我想将答案授予可以向我展示如何正确执行此操作的人filter()

这目前有效:

state.assignmentClusters.forEach(cluster => {
                    cluster.files.forEach(file => {
                        file.motifList.forEach((motif, index) =>{
                            if (motif.motif_id == state.motifIdToDelete) {
                                file.motifList.splice(index, 1)
                            }
                        });
                    });
                });

推荐阅读