3

我有一系列对象(例如,一副纸牌):

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

以下似乎有效:

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

(分别从甲板的“顶部”或“底部”拉出)

但是如果我想要一张中间的牌(比如说,如果这是一手牌)

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

该对象似乎没有正确分配给变量(一切都未定义)。我查找的所有内容都表明 splice 应该返回我正在移除的对象 - 我错过了什么?

4

4 回答 4

8

尝试

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

由于 splice 返回已删除元素的数组...

于 2012-06-07T16:41:34.257 回答
0

splice返回一个可能被移除元素的数组,所以如果你只移除一个元素,你仍然有一个数组。所以:

var card = deck.splice(2, 1)[0];
于 2012-06-07T16:41:46.950 回答
0

splice应该返回一个包含您删除的元素的数组。实际元素可以像这样获得:

var card = deck.splice(2,1)[0];
于 2012-06-07T16:42:00.537 回答
0

与此处相同的错误(即使是非常相似的环境:-):.splice()返回已删除元素的数组,而不是单个元素。因此,您需要获取该数组的第一个元素:

var card = deck.splice(2,1)[0];
于 2012-06-07T16:42:10.217 回答