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

来源:5-8 编程练习

weixin_慕前端6235132

2020-09-15 12:00:37

http://img.mukewang.com/climg/5f603c3e09d86d8b07370334.jpg

写回答

2回答

好帮手慕久久

2020-09-16

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

http://img.mukewang.com/climg/5f6178a909dec70a04440168.jpg

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

同学再看一下。

祝学习愉快!

0

好帮手慕久久

2020-09-15

同学你好,问题解答下:

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

http://img.mukewang.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
heixin_慕前端6235132
h 为什么会等价于:[1,3].splice(1,0,2,),而不是:[1,3].splice(2,0,2,),“array.indexOf(afterValue)+1”不是该等于2吗?
h020-09-16
共1条回复

0 学习 · 10739 问题

查看课程