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

删掉所有的 {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:""} 都删掉?


for (var g = 0; g < arr[i].c.length; g++) {
改成
for (var g = arr[i].c.length-1; g >=0; g--) {
就正常了
原因就在于,如果从头开始循环,遇到连续两个需要删除的元素时,删掉第一个,下一个元素就自动顶上来代替已删除的元素位置,然后程序再一次循环时,就会跳过这个元素而去处理下下个元素,这样就会造成删除不全的情况了。
解决的办法就是从后面往前面删,就可以完美避免上面的问题。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-01-12
写一个循环,清空所有的c
相似回答