zoukankan      html  css  js  c++  java
  • javascript : splice(0) 的妙用

    今天看前同事的代码,有个写法很有意思: splice(0)。

    有意思的是,这并不是一个“合法”的写法。

    w3school是这样写的:

    arrayObject.splice(index,howmany,item1,.....,itemX)
    参数描述
    index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
    howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。
    item1, ..., itemX 可选。向数组添加的新项目。

    index和howmany都是必须的,但似乎只写index也可以...

    那么,到底 splice(0) 会怎么样呢?

     

    stackoverflow 上有个问题很有意思。

    有个人说,我想把数组A的东西拷贝到数组B,结果数组A怎么就没了?

    var ArrayA = [];
    var ArrayB = [];
    
    ArrayA.push(1);
    ArrayA.push(2);
    
    ArrayB = ArrayA.splice(0);
    
    alert(ArrayA.length);

    没错 splice() 会修改原数组,而 splice(0) 会把原数组清空。

    var a = [1,2,3,4,5]
       ,b = a.splice(0);
    //=> a = [], b = [1,2,3,4,5]

    那怎么解答这个人的问题?

    很简单,用 slice() 就可以了。slice() 不会改变原数组。

    var a = [1,2,3,4,5]
       ,b = a.slice();
    //=> a = [1,2,3,4,5], b = [1,2,3,4,5]
  • 相关阅读:
    【Spring Framework】10、代理模式
    【Spring Framework】8、使用注解开发
    Codeforces 516E
    AtCoder Grand Contest 055 题解
    Codeforces 1606F
    贪心/构造/DP 杂题选做
    整数拆分最大乘积
    CSP-S2021 被碾压记
    洛谷 P2791
    LCT 小记
  • 原文地址:https://www.cnblogs.com/foxcharon/p/10140685.html
Copyright © 2011-2022 走看看