2017-01-10 2 views
0

У меня есть этот цикл в реакции:Как применять правила только для некоторых элементов в массиве

<div> 
    {this.state.dealersDeck.map(function(card, index){ 
     return <div className="cardFormatDH" key={ index }> {card.rankKey}{card.suit} </div>; 
    }, this)} 
</div> 

Это идет через массив объектов, а затем делает их на экране. Это все хорошо, за исключением того, что я хотел бы отформатировать его, чтобы отображать содержимое только в определенных точках. т. е. я создаю блэкджек, и я не хочу, чтобы вторая карта дилеров была видна до конца.

Возможно, мне придется показывать больше кода, но мне было интересно, есть ли у map какой-то атрибут, который я мог бы использовать.

ответ

0

Вы можете использовать основные IF ... ELSE оператор внутри функцию карты, а также. Кроме того, вы можете написать больше бизнес-логики и добавить больше функциональности.

var cardsHTML = this.state.dealersDeck.map(function(card, index){ 

    if(condition...1){ 
     return <div className="cardFormatDH" key={ index }> {card.rankKey}{card.suit} </div> 
    } 

    if(condition...2){ 
     return <div></div> 
    } 
} 
+0

я попытался это: 'если (this.state.dealersDeck [1]) { возвращение

{'-'}{'-'}
; } else { возвращение
{card.rankKey}{card.suit}
; } ' , но он меняет все карты на новый стиль –

+0

ok разрешил его. ура –

+0

@ Theworm Awesome !!! – Abhinav

1

Вы можете добавить булеву опору для каждой карты и сделать на его основе:

<div> 
    {this.state.dealersDeck.map(function(card, index){ 
     return { card.display && 
      <div className="cardFormatDH" key={ index }>{card.rankKey} {card.suit} </div> 
     } 
    }, this)} 
</div> 
+0

, но я не буду знать, какие карты он, как она будет отличаться каждый раз, когда –

Смежные вопросы