slice()函数如何与Javascript中的push()函数一起使用?

时间:2017-01-03 05:24:33

标签: javascript slice

此处ab的输出相同,但在slice()的情况下,我们没有传递任何参数,因此ab的输出,和c必须相同。那么为什么c的输出与此ab不同?

<!DOCTYPE html>
        <html>
        <head>
        </head>
        <body>
        <p id="1"></p>
        <p id="2"></p>
        <p id="3"></p>
        <p id="4"></p>
        <script>
        var a=["a","b","c"];
        var b=a;
        var c=a.slice();
        a.push("date");
        document.getElementById("1").innerHTML=a;
        document.getElementById("2").innerHTML=b;
        document.getElementById("3").innerHTML=c;
        document.getElementById("4").innerHTML=a;

        </script>
        </body>
        </html>

    ouptput:
    a,b,c,date
    a,b,c,date
    a,b,c
    a,b,c,date``

3 个答案:

答案 0 :(得分:2)

来自MDN

  

slice()方法将数组的一部分的浅表副本返回到从头到尾选择的新数组对象(不包括结尾)。原始数组不会被修改。

所以ca的副本,而b是对它的引用。因此,当您修改ab更改但c没有。

答案 1 :(得分:0)

在推送新元素之前,您要对数组进行切片。 slice也返回一个新数组,因此“a”数组的引用不会影响你的“c”数组。

希望这会有所帮助...

答案 2 :(得分:0)

a.slice()函数中的

slice未声明任何值。所以不执行任何操作。并a.slice() != a。因为在推入数组之前声明了c=a.slice()Slice()不会更改数组值。它会将数组值传递给c数组。如果你需要啊日期,只需推送c

数组

var a=["a","b","c"];
        var b=a;
        var c=a.slice();
        a.push("date");
        c.push('date')
        document.getElementById("1").innerHTML=a;
        document.getElementById("2").innerHTML=b;
        document.getElementById("3").innerHTML=c;
        document.getElementById("4").innerHTML=a;
<p id="1"></p>
        <p id="2"></p>
        <p id="3"></p>
        <p id="4"></p>