老师检查作业
来源:4-3 编程练习
听的说
2021-09-23 16:23:03
没看懂任务提示,但是代码执行的结果是没有错误的
var arr = ["有效", "无效", "有效", "无效", "无效", "有效"];
for (var i = 0; i < arr.length; i++) {
if (arr[i] == "无效") {
arr.splice(i, i);
}
}
document.write(arr)
2回答
好帮手慕久久
2021-09-23
同学你好,解答如下:
1、如果将数组arr更换成如下形式,则同学的运行结果就不对了:


正常来讲,程序应该很通用,即不论arr中有几个元素,都会把所有的“无效”删除。同学的代码,只是赶巧让结果看上去正确了。
splice方法删除元素时,会改变数组的长度,导致“被删除元素”后面的元素,索引改变:

因此删除元素时,需要修正索引;代码整体需要做如下修改:

另外,输出arr,建议使用console.log(),这样更符合任务提示的第三条:

2、任务提示是可以对应上同学的代码的:

祝学习愉快!
听的说
提问者
2021-09-23
var arr = ["有效", "无效", "有效", "无效", "无效", "有效"];
for (var i = 0; i < arr.length; i++) {
if (arr[i] == "无效") {
arr.splice(i, i);
}
}
document.write(arr)
相似问题