push mutates the state directly, and although you’re calling setState immediately afterward, you risk unexpected behavior; the most likely is that the component simply won’t re-render, thinking the state hasn’t changed. Better to keep it non-mutating:
var newCard = [...this.state.card, this.props.tvSeries[i]];
.push() returns a length of the array, so newCard is not an array but integer. But because setState is asynchronous, it doesn’t update immediately, but when React feels like it. And because you mutate state directly when you console.log() you see that this.state.card is an array, but after that it gets updated and when you try to call .map() on integer you get an error.