一、关于数据类型今天在将后端返回的数组数据转换为elementUI树组件可用的数组时,因为数据类型比较复杂,里面的数据类型有Object,Array,String、Number等基本类型,所以我在转换数据的时候采用了双重递归的写法。在处理childrenitem的时候,没注意把child_iteminstanceofArray的判断写在child_iteminstanceofObject的后面,然后改变了Array的标签item的值。当我发现修改后只有第一层生效,递归进去的时候根本没有生效。最后发现Array后面也被判断为Object类型了,没处理就无语了,所以以后再判断数据类型,以及Array类型和Object类型的处理方式不一样的时候,Array类型的判断一定要写在Object的前面,否则使用严格判断类型的方法(Object.prototype.toString.call),而不是instanceoftypeof的方法。//处理树形组数据绑定数目的子项checkItem(label,child_item){letitemList={id:this.n++,label:label,children:null}if(child_iteminstanceofArray){itemList.children=this.checkList(child_item)}elseif(child_iteminstanceofObject){itemList.children=this.checkObj(child_item)}elseif(child_item){itemList.children=[{id:this.n++,label:child_item,}]}returnitemList},//处理数组类型checkList(list){letdata=[]list.forEach((item,index)=>{letitemListif(item.url){itemList=this.checkItem(item.url,item)}else{itemList=this.checkItem(index,item)}data.push(itemList)})returndata},//处理对象类型checkObj(obj){letdata=[]for(constkeyinobj){让项目=obj[key]letitemList=this.checkItem(key,item)data.push(itemList)}returndata},二、indexOf的用法还是关于elementUI树组件的过滤用法indexOf方法只能用于判断string和array是否包含某个字符,其他不能使用。如果你的树绑定数组的值有Number或者其他类型而不仅仅是字符串类型,那么你一定要记得在filterNode方法中改变类型!!!!不然过滤的时候会报错**转字符串类型1的用法toString方法string=toString(num)缺点:不能转underfind和null2String方法string=String(num)可以转underfind和null3num+''string=num+''**//节点过滤树使用
