javascript array.slice (). push () لا يعمل كما هو متوقع

ينتج الرمز التالي (في وحدة تحكم جافا سكريبت من Chrome)

a: (3) [1، 2، 3] b: (4) [1، 2، 3، 99] c: 4

كنت أتوقع ج لتبدو وكأنها ب. لماذا لا؟

function snafu(){
    var a = [1,2,3];
    var b = a.slice();
    var c = a.slice().push(99);
    b.push(99);
    console.log("a:",a,"  b:",b,"  c:",c);
}
0

2 إجابة

Array.push() gives you value of Array.length and not array itself

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"><div class = "snippet-code">

 var a = []؛
var b = a.push (8)؛/* تقوم بإرجاع طول الصفيف بعد دفع القيمة إلى صفيف * /
console.log ('a ='، a، '، b ='، b)؛  
</div></div>
0
وأضاف

حسنا ، تذكر Array.slice() سوف يعيد لك صفيف جديد. لذا أثناء دفعها على slice() ، ستعود لك طول الصفيف.

function snafu(){
    var a = [1,2,3];
    var b = a.slice();
    var c = a.slice();
    c.push(99);
    b.push(99);
    console.log("a:",a,"  b:",b,"  c:",c);
}

snafu();

variable c will give you new Array so you can do whatever you want with c.

هذا هو. سهل!!!!

0
وأضاف