js splice和slice详解

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>测试splice和slice</title>
</head>

<body>
    <h2>测试splice,改变原数组</h2>
    <ol>
        <li>splice() 方法的参数是可选的。如果不给它传递参数,则该方法不执行任何操作。如果给它传递一个参数,则该方法仅执行删除操作,参数值指定删除元素的起始下标,(包含该下标元素),splice() 方法将删除后面所有元素。
            <ul>
                <li>如果指定两个参数,则第 2 个参数值表示要删除元素的个数。大于1则往后走</li>
                <li>如果指定三个或多个参数,则第 3 个以及后面所有参数都被视为插入的元素。插入位置为删除元素的位置</li>
                <li>如果不执行删除操作,第 2 个参数值应该设置为 0,但是不能够空缺,否则该方法无效</li>
            </ul>
        </li>
        <li>splice() 方法的删除和插入操作是同时进行的,且是在原数组基础上执行操作。插入的元素将填充被删除元素的位置,并根据插入元素个数适当调整插入点位置。而不是在删除数组之后重新计算插入点的位置。</li>
        <li>splice() 方法执行的返回值是被删除的子数组。如果没有删除元素,则返回的是一个空数组。</li>
        <li>当第 1 个参数值大于 length 属性值时,被视为在数组尾部执行操作,因此删除无效,但是可以在尾部插入多个指定元素。</li>
        <li>参数取负值问题。如果第 1 个参数为负值,则按绝对值从数组右侧开始向左侧定位。如果第 2 个参数为负值,则被视为 0。</li>
    </ol>
    <script>
        // var a = [1, 2, 3, 4, 5]; 
        // var b = a.splice(2); //一个参数
        // var b = a.splice(2, 0); //两参数 但是第二参数为0 返回空数组
        // var b = a.splice(2, 1); //两个参数
        // var b = a.splice(2, 1, 7, 8, 9); //三个参数
        // var b = a.splice(6, 1, 7)// 当第 1 个参数值大于 length 
        // var b = a.splice(-1) //负值参数
        // console.log(a);
        // console.log(b);
    </script>
    <h2>测试slice,不改变原数组。返回新数组</h2>
    <ol>
        <li>第 1 个参数指定起始下标位置,包括该值指定的元素;第 2 个参数指定结束位置,不包括指定的元素。</li>
        <li>该方法的参数可以自由设置。如果不传递参数,则不会执行任何操作;如果仅指定一个参数,则表示从该参数值指定的下标位置开始,截取到数组的尾部所有元素。</li>
        <li>当参数为负值时,表示按从右到左的顺序进行定位,即倒数定位法,而不再按正数顺序定位(从左到右),但取值顺序依然是从左到右。如果起始下标值大于或等于结束下标值,将不执行任何操作。</li>
        <li>当起始参数值大于或等于 length 属性值时,将不会执行任何操作,返回空数组。而如果第二个参数值大于 length 属性值时,将被视为 length属性值。</li>
        <li>slice() 方法将返回数组的一部分(子数组),但不会修改原数组。而 splice() 方法是在原数组基础上进行截取。如果希望在原数组基础上进行截取操作,而不是截取为新的数组,这时候就只能够使用 splice() 方法了。</li>
    </ol>
    <script>
        //var a = [1, 2, 3, 4, 5]; //定义数组
        //var b = a.slice(0, 1) //传递两参数[1]
        // var b = a.slice() //不传递参数[1, 2, 3, 4, 5]
        // var b = a.slice(1) //传递一个参数 [2, 3, 4, 5]
        // var b = a.slice(-2) //参数负数[4, 5]
        // var b = a.slice(5) // 一参数大于等于长度[]
        // var b = a.slice(4, 6) // 两参数大于等于长度[5]
        //console.log(b);
    </script>
</body>

</html>

参考文章JS截取数组:使用splice()和slice()方法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值