您的位置:首页 > Web前端 > JavaScript

JavaScript Array.splice方法替换问题

2016-06-01 23:44 495 查看
该方法可以通过指定起始索引和数据个数的方式,删除或替换数组中的部分数据,改方法的返回值为被删除或替换掉的数据,调用格式为: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两个元素。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: