关于删除数组中的某一项的问题?
var arr = ["Blockly.Blocks['应用于']","Blockly.JavaScript['应用于']","Blockly.JavaScript['是是是']","Blockly.Blocks['是是是']"];
for(var i=0;i<arr.length;i++){
if (arr[i].indexOf('应用于') != -1) {
arr.splice(i,1);
console.log(i);
console.log(arr[i]);
}
}
console.log(arr);
打印出来是这样的:
只匹配了一次,这是为什么啊?
谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
你在循环里面修改了原数据arr了啊
第一次循环i=0 arr[0]="Blockly.Blocks['应用于']"可以匹配上
然后你把arr的0元素给删除了
第二次循环i=1 arr[1]="Blockly.JavaScript['是是是']" 了。
这个错误犯的有点。。
你的for循环,长度是动态改变的,也就是说删除了一个元素,长度就变了
i=0时,arr[0]="Blockly.Blocks['应用于']",arr[0].indexOf('应用于') != -1为true, arr.splice(i,1)删除了第0项,这时arr=["Blockly.JavaScript['应用于']","Blockly.JavaScript['是是是']","Blockly.Blocks['是是是']"]。arr.length变为3
i=1时,arr[1]="Blockly.JavaScript['是是是']", arr[1].indexOf('应用于') != -1为false
i=2时,同上
参考https://developer.mozilla.org...