JS splice方法不执行


<script>
            var arr=['sky','wind','snow','sun'];
            arr.splice(2,2);//从数组下标2的位置开始,删掉两个元素
            console.log(arr);
            arr.splice(1,1,'snow');//从数组下标1的位置开始,删除1个元素后,再添加snow元素
            console.log(arr);
            arr.splice(4,0,'hail','sun');//指定下标4大于数组的长度,则直接在数组末尾添加hail和sun元素
            console.log(arr);
            arr.splice(3,0,['lala','yaya'],null,undefined,[]);//从数组下标3的位置开始,添加数组、null、undefined和空数组
            console.log(arr);
        </script>

img

为什么前三个splice不执行,结果都是最后一个splice方法的结果

数组是对象,对象打印到控制台,展开后得到是当前对象的值

要看当时的值,可以用JSON.stringify转为普通类型字符串就可以看到内容了,如下

img


<script>
    var arr = ['sky', 'wind', 'snow', 'sun'];
    arr.splice(2, 2);//从数组下标2的位置开始,删掉两个元素
    console.log(JSON.stringify(arr));
    arr.splice(1, 1, 'snow');//从数组下标1的位置开始,删除1个元素后,再添加snow元素
    console.log(JSON.stringify(arr));
    arr.splice(4, 0, 'hail', 'sun');//指定下标4大于数组的长度,则直接在数组末尾添加hail和sun元素
    console.log(JSON.stringify(arr));
    arr.splice(3, 0, ['lala', 'yaya'], null, undefined, []);//从数组下标3的位置开始,添加数组、null、undefined和空数组
    console.log(JSON.stringify(arr));
</script>


img

因为js的数组是引用数据类型,你再console的时候,把arr,json转一下就能得到你想要的结果了