为什么不在Javascript中拼接数组中的对象返回数组?

时间:2012-06-07 16:38:21

标签: javascript arrays

我有一系列对象(比如一副牌):

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

以下似乎有效:

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

(分别从牌组的“顶部”或“底部”拉出)

但如果我想从中间拿一张牌(比方说,如果这是一手牌)

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

对象似乎没有正确分配给变量(一切都是未定义的)。我查看的所有内容都说拼接应该返回我正在删除的对象 - 我错过了什么?

4 个答案:

答案 0 :(得分:7)

尝试

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

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

答案 1 :(得分:0)

splice返回一个可能删除的元素数组,因此如果只删除一个元素,则仍然有一个数组。所以:

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

答案 2 :(得分:0)

splice应返回包含您删除的元素的数组。实际元素可以像:

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

答案 3 :(得分:0)

here一样的错误(即使是一个非常类似的环境:-):.splice()会返回已删除元素的数组,而不是单个元素。所以你需要获得该数组的第一个元素:

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