2014-05-08 39 views
4

我想從現有的克隆一個新的數組並推入一個元素。 不幸的是,現有的陣列是一個空的,所以它像:什麼是空array.slice(0).push(任何)是什麼意思?

[].slice().push(65) 

上述表達式的輸出是1

爲什麼1?

+1

[MDN'推()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push):* push()方法將一個或多個元素添加到數組的末尾,並返回數組的新長度。*您需要分兩步完成,不是那種模式。 – epascarello

回答

6

Array#push() returns the length of the resultant array.既然你推一個值到一個空數組,結果的長度的確會1

如果你想看到更新的陣列作爲輸出,你需要保存提到它,因爲push()不返回參考:

var arr = [].slice(); 
arr.push(65); 
console.log(arr); // [ 65 ] 
+0

那麼有沒有更簡單的方法有一個新的數組,並推入更多的元素?我必須先創建一個變量來存儲[] .slice(),然後在新數組上調用push方法? –

+0

@Aaron Shen:如果你真的想避免這種情況,你可以用concat代替:'[] .concat(65)'它甚至可以節省你用slice()克隆原始數組的需求。 – BoltClock

2

我的意見更改爲一個答案:

MDN push()的push()方法添加一個或多個元素的結束一個數組並返回數組的新長度。

您需要在兩個步驟中完成,而不是使用該模式。

var temp = [].slice(); 
temp.push(65); 
console.log(temp); 

如果你想這樣做在同一行,看看concat()

var a = [1,2,3]; 
var b = [].concat(a,64); 
console.log(b);