3

私はオブジェクトの配列(たとえば、トランプのデッキ)を持っています:

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

以下はうまくいくようです:

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

(デッキの「上」または「下」からそれぞれ引っ張る)

しかし、真ん中からカードが欲しい場合(たとえば、これがカードの手だった場合)

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

オブジェクトが変数に適切に割り当てられていないようです(すべてが未定義です)。私が調べたすべてのことは、スプライスは私が削除しているオブジェクトを返す必要があると言っています-私は何が欠けていますか?

4

4 に答える 4

8

試す

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

スプライスは削除された要素の配列を返すので...

于 2012-06-07T16:41:34.257 に答える
0

spliceは、削除された可能性のある要素の配列を返すため、1つの要素のみを削除しても、配列は残ります。それで:

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 に答える