求助JS如何循环删掉不符合条件的子数组

mathsning2017 2020-09-23 08:34:28
var array=[
{
id: 1,
name:aaa,
info:[
{
id:1,
adress:beijin
},
{
id:2,
adress:shanghai
},
...
]
},
{
id: 2,
name:bbb,
info:[
{
id:1,
adress:beijin
},
{
id:2,
adress:shanghai
},
...
]
}
,....
]; 循环,如果info数组中的元素id不等于父元素id时则删掉。比如{id: 1,name:aaa, info:[{id:1,adress:beijin},{id:2,adress:shanghai},...]}中父id=1,info子id不等于1则全删掉。用for splice则发现info中全删掉为空了。
...全文
1750 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
風灬雲 2020-09-24
  • 打赏
  • 举报
回复
var array=[ { id: 1, name:'aaa', info:[ { id:1, adress:'beijin' }, { id:2, adress:'shanghai' } ] }, { id: 2, name:'bbb', info:[ { id:1, adress:'beijin' }, { id:2, adress:'shanghai' } ] } ]; var res = array.map( e =>{ e.info = e.info.filter( f => f.id === e.id ) return e; } )
mathsning2017 2020-09-24
  • 打赏
  • 举报
回复
感谢各位大神! 一楼二楼都可以。三楼的想法是一样,但这样info就是空的,四楼的效果和三楼是一样的。
天际的海浪 2020-09-23
  • 打赏
  • 举报
回复

var array = [{
	id: 1,
	name: "aaa",
	info: [{
		id: 1,
		adress: "beijin"
	}, {
		id: 2,
		adress: "shanghai"
	}]
}, {
	id: 2,
	name: "bbb",
	info: [{
		id: 1,
		adress: "beijin"
	}, {
		id: 2,
		adress: "shanghai"
	}]
}];

for (var i = 0; i < array.length; i++) {
	var info = array[i].info;
	for (var j = info.length-1; j >= 0; j--)
		if (info[j].id != array[i].id)
			info.splice(j,1);
}
console.log(array);
chenrynet 2020-09-23
  • 打赏
  • 举报
回复
array.map((item,index)=>{ var list=item.info.filter((voo)=>{ return item.id==voo.id; }) array[index].info=list })
chenrynet 2020-09-23
  • 打赏
  • 举报
回复
for(var i=0;i<array.length;i++){ var id=array[i].id; var list=[] for(var j=0;j<array[i].info.length;j++){ if(array[i].info[j].id==id){ list.push(array[i].info[j]) } } array[i].info=list; }

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧