请老师检查

来源: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)

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

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

祝学习愉快,望采纳。

0

0 学习 · 10739 问题

查看课程

相似问题

请老师检查

回答 3

请老师检查

回答 1

老师请检查

回答 1

老师请检查

回答 1

老师请检查

回答 1