3

I have an array of objects (say, a deck of cards):

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

The following seems to work:

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

(pulling from the "top" or "bottom" of the deck respectively)

But if I want a card from the middle (say, if this was a hand of cards)

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

The object doesn't seem to get properly assigned to the variable (everything is undefined). Everything I look up says that splice should return the object that I'm removing - what am I missing?

4 Answers 4

8

Try

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

Since splice returns an array of the removed elements...

Sign up to request clarification or add additional context in comments.

Comments

0

splice returns an array of possible removed elements, so if you remove only one element you still have an array. So:

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

Comments

0

splice should return an array containing the element you removed. The actual element can be obtained like:

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

Comments

0

Just the same error as here (even a quite similiar environment :-): .splice() returns an Array of the removed elements, not a single element. So you will need to get the first element of that array:

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.