老师检查作业

来源: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更换成如下形式,则同学的运行结果就不对了:

https://img.mukewang.com/climg/614c3b40090bb95e06520285.jpg

https://img.mukewang.com/climg/614c3b4a0927430703500097.jpg

正常来讲,程序应该很通用,即不论arr中有几个元素,都会把所有的“无效”删除。同学的代码,只是赶巧让结果看上去正确了。

splice方法删除元素时,会改变数组的长度,导致“被删除元素”后面的元素,索引改变:

https://img.mukewang.com/climg/614c3bc209099f9b06610151.jpg

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

https://img.mukewang.com/climg/614c3c6509d253d808070346.jpg

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

https://img.mukewang.com/climg/614c3de609cee28903810107.jpg

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

https://img.mukewang.com/climg/614c3d5509baf98607320280.jpg

祝学习愉快!

0

听的说

提问者

2021-09-23

var arr = ["有效", "无效", "有效", "无效", "无效", "有效"];

for (var i = 0; i < arr.length; i++) {

if (arr[i] == "无效") {

arr.splice(i, i);

}

}

document.write(arr)


0

0 学习 · 17877 问题

查看课程