我有一系列对象(比如一副牌):
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];