我是用for in遍历一个树形实现删除的功能,所以在里面又嵌套了一个,但我写splice会报错

我是用for in遍历一个树形实现删除的功能,所以在里面又嵌套了一个,但我写splice会报错。请各位大神指教

 //      删除
        delectData(index,row,id){
          for(var i in this.dataSource){
            console.log(this.dataSource[i].id)
              for (var zz in this.dataSource[i].children){
                this.dataSource[i].children[zz].splice(index,1)
                console.log(this.dataSource[i].children[zz].id);
              }
          }
        },

图片描述

阅读 2.2k
3 个回答

splice前面接的是数组啊,children[zz]是数组中的一个元素了吧?children.splice(index, 1)试试?

典型的BUG!循环删除造成下标指向异常,应将删除操作移到循环体外!!

this.dataSource[i].children[zz].splice(index,1)

这里有两点需要注意:

  1. splice方法是数组的方法.
  2. 用children方法获取的是伪数组,是不能用数组的方法的.如果要用可以这样用.
    [].splice.call(this.dataSource[i].children,index,1).

如果这里你的children方法是你自己定义的获取数组的方法,请忽略第二条.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题