前端js,怎么删除数组中的其中一个对象?

删掉所有的{cc:"",cd:""}letarr=[{ab:"",ac:"",c:[{cc:"1",cd:"2"},{cc:"",cd:""},{cc:"",cd:""}... 删掉所有的 {cc:"",cd:""}

let arr = [
{
ab: "",
ac: "",
c:[
{cc:"1",cd:"2"},
{cc:"",cd:""},
{cc:"",cd:""},
]
},
{
ab: "",
ac: "",
c:[
{cc:"1",cd:"2"},
{cc:"1",cd:""},
{cc:"",cd:""},
]
}, {
ab: "",
ac: "",
c:[
{cc:"1",cd:"2"},
{cc:"",cd:""},
{cc:"",cd:"2"},
]
},
]

for (var i = 0; i < arr.length; i++) {
for (var g = 0; g < arr[i].c.length; g++) {
if (arr[i].c[g].cc == "" && arr[i].c[g].cd == "") {
arr[i].c.splice(g,1)
}
}
}
console.log(arr);
怎么不能把所有的 {cc:"",cd:""} 都删掉?
展开
 我来答
网海1书生
科技发烧友

2018-01-12 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26230

向TA提问 私信TA
展开全部

for (var g = 0; g < arr[i].c.length; g++) {
改成
for (var g = arr[i].c.length-1; g >=0; g--) {
就正常了
原因就在于,如果从头开始循环,遇到连续两个需要删除的元素时,删掉第一个,下一个元素就自动顶上来代替已删除的元素位置,然后程序再一次循环时,就会跳过这个元素而去处理下下个元素,这样就会造成删除不全的情况了。
解决的办法就是从后面往前面删,就可以完美避免上面的问题。
zcp299
2018-01-12 · TA获得超过1299个赞
知道小有建树答主
回答量:1182
采纳率:75%
帮助的人:408万
展开全部
写一个循环,清空所有的c
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式