不理解为什么这里输出的会是1,2,3

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,因为afterValue是1,而array是[1,3],[1,3].indexOf(1)的结果是0,如下:

http://img1.sycdn.imooc.com//climg/5f6178a909dec70a04440168.jpg

原因是“1”在数组[1,3]中的索引是0(indexOf获取的是索引的位置)。

同学再看一下。

祝学习愉快!

好帮手慕久久 2020-09-15 15:02:13

同学你好,问题解答下:

根据调用“insert(2).into([1, 3]).after(1)”可知,value=2,array=[1,3], afterValue=1,如下:

http://img1.sycdn.imooc.com//climg/5f6064c60934687e09450414.jpg

所以最终计算的就是“[1,3]. splice([1,3].indexOf(1)+1,0,2)”。其中,splice方法的参数大于2个,代表插入元素,第一个参数代表起始位置,第二个参数代表要删除几项,后面的参数代表要插入的内容;而arr.indexOf(a)是获取数组arr中,元素a所在的索引,如果没有则返回-1,所以“[1,3]. splice([1,3].indexOf(1)+1,0,2)”等价于“[1,3]. splice(1,0,2)”,即在[1,3]索引为1的位置,删除0个元素,插入一个2(在3前面插入一个2),所以得到的是[1,2,3]。

如果我的回答帮到了你,欢迎采纳,祝学习愉快!

  • 为什么会等价于:[1,3].splice(1,0,2,),而不是:[1,3].splice(2,0,2,),“array.indexOf(afterValue)+1”不是该等于2吗?
    2020-09-16 10:14:34
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师