for循环进行splice只能循环一次

> 注:只是本人在学习应用时遇到的问题以及解决方式,如有不对或更好的方法可以在评论区评论,一起学习

在使用for循环时,将目标删除后发现只删除了一个目标就停止了

for ( let i = 0 ; i < dataM.length ; i++ ) {
        if ( dataM[i].visible === '1' || dataM[i].status === '1' ) {
          dataM.splice(i, 1);
        }

在查询资料和请教之后,发现splice() 方法向/从数组添加/删除项目,并返回删除的项目。
注释:splice() 方法会改变原始数组。 这个很重要
在使用splice方法之后改变了原数组,导致原数组的length数量发生改变,产生: i >= dataM.length 的情况,所以停止循环
更改之后:

for ( let i = 0 ; i < dataM.length ; i++ ) {
        if ( dataM[i].visible === '1' || dataM[i].status === '1' ) {
          dataM.splice(i, 1);
          i--;
        }

这样就可以了

posted @ 2023-02-27 16:24  Clown&  阅读(73)  评论(0)    收藏  举报