Możesz też to rozgryźć od strony CSSa. Cardy są postawione na flexboksie. Wystarczy je lekko nadpisać:
@media (min-width: 768px) {
.card{
flex: 0 0 33.333333%;
max-width: 33.33%;
}
}
(Być może będzie trzeba zwiększyć priorytet klasy np. poprzez taki zapis: .card-deck .card).
Dzięki temu możesz do wrappera o klasie "card-deck" wrzucać dowolną ilość pojedynczych cardów, a co 3 elementy linia się załamie i element wskoczy pod spód. Bez tych kilku linijek - jeśli będzie w card-deck 1 element, to zajmie on 100% dostępnej szerokości, 2 - każdy po 50, a linia załamie się, jeśli elementy nie będą się mieściły - lekko nieestetyczne.
Chyba, że robisz to dla praktyki, wtedy nie pomogę :) jakiś for loop pewnie musi tego pilnować