//二维数组
var region = [
{
id:1,
name:'北京',
children:[
{
id:4,
name:'北京市',
}
]
},
{
id:2,
name:'天津',
children:[
{
id:5,
name:'天津市',
}
]
},
{
id:3,
name:'河北',
children:[
{
id:6,
name:'石家庄市',
},
{
id:7,
name:'唐山市',
},
{
id:8,
name:'秦皇岛市',
},
{
id:9,
name:'邯郸市',
},
{
id:10,
name:'邢台市',
}
]
}
]
//需要去掉的值
var selectedIds = [4,5,6,7,8]
//想要的效果是
region = [
{
id:1,
name:'北京',
children:[]
},
{
id:2,
name:'天津',
children:[]
},
{
id:3,
name:'河北',
children:[
{
id:9,
name:'邯郸市',
},
{
id:10,
name:'邢台市',
}
]
}
]
自己尝试写了下有错误
for(var i = 0; i < region.length; i++){
for(var s = 0; s < region[i].children.length; s++){
selectedIds.find(function(value, index, arr) {
if(value == region[i].children[s].id) {
selected[i].children.splice(s,1)
}
})
}
}
//出来的结果却是
region = [
{
id:1,
name:'北京',
children:[]
},
{
id:2,
name:'天津',
children:[]
},
{
id:3,
name:'河北',
children:[
{
id:7,
name:'唐山市',
},
{
id:9,
name:'邯郸市',
}
]
}
]
主要是i跳变了,假如数组长度为5,i为0,删除i位置的元素后,原本1位置的变成0位置了,2位置的变成了1位置,而i是递增的,所以变成的1,那么原本1现在0的位置就跳过去了。所以你需要在删除元素后进行i--