2012-06-07 54 views
1

我有對象的數組(比方說,一副紙牌):爲什麼不在Javascript中使用數組拼接對象會返回數組?

var deck = []; 
deck.push(new Card(suit, rank)); 

以下似乎工作:

var card = deck.pop(); 
var card = deck.shift(); 

(來自的「頂部」或「底部」拉分別甲板)

但是如果我想從中間(比如一張卡,如果這是一手牌)

var card = deck.splice(2,1); 

該對象似乎沒有正確分配給該變量(一切都未定義)。我仰望的一切都表明拼接應該返回我正在移除的對象 - 我錯過了什麼?

回答

5

嘗試

var card = deck.splice(2,1)[0]; 

由於剪接返回數組中刪除元素 ...

+0

我可以發誓我試過了,但它的工作。 –

0

splice返回地除去元素的數組,因此,如果您刪除只有一個元素,你仍然有陣列。所以:

var card = deck.splice(2, 1)[0]; 
0

splice應返回包含您刪除的元素的數組。

var card = deck.splice(2,1)[0]; 
0

只要相同的錯誤here(即使是相當similiar環境:-):實際元素可以等來獲得.splice()返回Array中刪除的元素,而不是一個單一的元件的。所以你需要得到該陣列的第一個元素:

var card = deck.splice(2,1)[0]; 
相關問題