关闭

JavaScript Array.splice方法替换问题

标签: javascript
223人阅读 评论(0) 收藏 举报
分类:

该方法可以通过指定起始索引和数据个数的方式,删除或替换数组中的部分数据,改方法的返回值为被删除或替换掉的数据,调用格式为:array.splice(start,count,data),其中,array(必选项,数组名称);start(必选项,整数,起始索引);count(必选项,整数,要删除或替换的元素个数);data(可选项,用于替换指定数据的新数据)。若没有指定data参数,则该指定的数据将会被删除。

开门见山,直接上代码

<script type="text/javascript">
        var arr=new Array(1,2,3,4,5,6,7,8,9,10);
        writearr("初始",arr);
        var rewith=new Array(0,0,0);
        var temp1=arr.splice(2,5,rewith);
        with(document)
        {
            writearr("替换了5个数据",temp1);
            writearr("替换为",rewith);
            writearr("替换后",arr);
            arrayLength(arr);
            var temp2=arr.splice(3,2);
            writearr("删除两个元素",temp2);
            writearr("删除后",arr);

        }

        function writearr(str,array) {
            document.write(str+":");
            document.write(array.join(","));
            document.write("<br>")
        }
        function arrayLength(arr) {
            document.write("arrLength:"+arr.length);
            document.write("<br>");
        }
    </script>

运行结果:
这里写图片描述
结果是不是有些出乎意料呢?
相信大家前4行的输出结果都没有什么意外,对第5,6行的结果也许会有些问题,明明替换后的数组是1,2,0,0,0,8,9,10一共8个元素,为何数组的长度只有6呢?还有arr.splice(3,2)按理来说删除的该是0,0啊,为什么是8,9?请看下图:
这里写图片描述
当我们用一个新的数组(0,0,0)来替换原来的数组指定数据时,将(0,0,0)这个数组当作更新后数组的一个元素,也就是说(0,0,0)和1,2,8,9,10的地位是平等的,要将其视为一个整体,所以(0,0,0)这个元素的索引为2,其后面元素8的索引自然为3,以此类推,所以arr.splice(3,2)删除的是8,9两个元素。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3353次
    • 积分:129
    • 等级:
    • 排名:千里之外
    • 原创:10篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章分类