请老师检查
来源:5-8 编程练习
木子小可爱
2019-11-04 11:35:58
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script type="text/javascript">
// function insert(value) {
// return {
// into: function(array) {
// return {
// after: function(afterValue) {
// array.splice(array.indexOf(afterValue) + 1, 0, value);
// return array;
// }
// };
// }
// };
// }
// insert(2).into([1, 3]).after(1);
// 补充代码
var insert=value=>({
into:array=>({
after:afterValue=>{
array.splice(array.indexOf(afterValue) + 1, 0, value);
// debugger
return array;
}
})
})
console.log(insert(2).into([1, 3]).after(4));
</script>
</body>
</html>
老师, 有个问题,就是那个arr.indexOf(afterValue)的值为什么不在了 是被那个value取代了吗,感觉这些方法都忘光了
1回答
好帮手慕夭夭
2019-11-04
你好同学,效果实现正确。参考如下理解:
(1)根据实参的传递,value=2 ,array=[1,3] , ,afterValue=4。
(2)代码中,array.indexOf(afterValue) 意思是从array中检测是否有4 ,没有返回了 -1。
(3)所以如下代码就等于array.splice(0,0,2)

要了解splice()这个方法的用法,第一个参数是添加或者删除元素的位置,第二个参数是删除多少个元素。第三个参数是要添加的新元素。array.splice(0,0,2)中,表示在索引为0的地方删除了0个元素,即一个元素也没有删除,并添加了一个新元素2 ,所以array最终的结果为 [2,1,3] 哦
祝学习愉快,望采纳。