0
点赞
收藏
分享

微信扫一扫

for循环splice遇到的坑

code_balance 2022-07-13 阅读 62


错误代码

console.log(this.query.length);
for (let i = 1; i < this.query.length; i++) {
console.log('out', i);
console.log(this.query[i]);
if (!this.query[i].trim()) {
console.log('int', i);
this.query.splice(index, 1);
}
}

现象没次删除最后几个没删调
查处原因是因为每次this.query.length都会变化减小,但是i的没次都会增加,等到删到一半的时候,i的值已经增加到和length一样的长度了,导致不会在循环,前面的值就没有删掉了。
想要的效果是循环遍历数组把空的删掉

正确代码

倒序增加

console.log(this.query.length);
for (let i = this.query.length - 1; i > 0; i--) {
console.log('out', i);
console.log(this.query[i]);
if (!this.query[i].trim()) {
console.log('int', i);
this.query.splice(index, 1);
}
}

每次删除下标减一

for (let i = 1; i < this.query.length; i++) {
console.log('out', i);
console.log(this.query[i]);
if (!this.query[i].trim()) {
console.log('int', i);
this.query.splice(index, 1);
i--;
}
}

直接filter完数据直接返回


举报

相关推荐

0 条评论