var arr=["有效","无效","有效","无效","无效","有效"]; for(var i=0;i<arr.length;i++){ if(arr[i]=='无效'){ arr.splice(i,i) } } console.log(arr)
是这样子吗,老师,这里的arr.splice(i,i)比如说i的参数是【1】,那是不是这里的arr.splice其实是
["有效","无效"]
因为遍历到这里位置。
登陆购买课程后可参与讨论,去登陆吧
同学你好,代码效果实现是对的,针对同学的问题解答如下:
理解有误,arr指的是整个数组,与遍历到哪里无关,当i值为1时,满足arr[i] == '无效' 这个条件,执行arr.splice(i,i),此时的arr值为["有效","无效","有效","无效","无效","有效"]。即:["有效","无效","有效","无效","无效","有效"].splice(1,1) 从数组索引为1的位置删除1个元素, 删除元素后的数组arr值为 ["有效","有效","无效","无效","有效"]
祝学习愉快~
那老师我这里设置的是arr.splice(i,i),是不是因该改成arr.splice(i,1)比较合理?
但是我不明白我当时设置的是arr.splice(i,i)如果i变成2后那不是arr.splice(2,2)这样子了吗?
同学你好, 对于你的问题解答如下:
1、代码实现是比较灵活的,针对本题效果,两种方式都是可以的,但是考虑代码灵活适用性的话,那么改成改成arr.splice(i,1)会更好。
不过这里有个小细节需要注意,改成改成arr.splice(i,1),需要针对i进行减一操作,如下:
因为,splice方法会改变原数组长度,如果符合if判断,数组长度就会减去1,所以索引也需要跟着减去1,否则会跳过一项。例如:第一个‘无效’去掉后
后面的‘有效’索引会变为1,而当前索引为2,所以需要减去1 。
2、结合老师第一次的回答,如下:
删除元素后的数组为:["有效","有效","无效","无效","有效"],当i值为2时,arr[2]值为无效,满足if条件,执行arr.splice(2,2),从数组索引为2的位置删除2个元素,原数组中刚好连着两个都是无效,所以得到的结果为["有效","有效","有效"]
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
登录后可查看更多问答,登录/注册
入行前端,是明智的选择!市场需求大,就业前景好,入行门槛低,小白易上手 全新升级:技术更新,Vue3.0/TypeScript/React17.x; 技术更全面,从0基础到全栈开发再到大型项目构建
157 1
75 1
31 2
201 5
155 1
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号
在线咨询
领取优惠
免费试听
领取大纲
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星