先日、こちらの質問 をさせていただいたのですが、更にわからないことがあったので質問させていただきました。
回答していただいたこちらのコードで実行したところ正常に表示できたのですが、
React
1{this.props.projects.map(project => ( 2 category.id == project.category.id && 3 <div key={project.id} className="project" > 4 <div className="project-box"> 5 <p>{project.name}</p> 6 </div> 7 </div> 8))}
下記のコードのようにカテゴリーに該当するプロジェクトがなかった場合に<p>なし</p>
を返そうとすると、本来は下図の1のように1プロジェクトが一つもないカテゴリーの欄だけに一回だけ「なし」と表示したのですが下図の2ように大量に「なし」が表示されてしまいます。
React
1{this.props.projects.map(project => ( 2 category.id == project.category.id ? 3 <div key={project.id} className="project" > 4 <div className="project-box"> 5 <p>{project.name}</p> 6 </div> 7 </div> 8 : 9 <p>なし</p> 10))} 11
いろいろ調べてみて、filterでも試してみたのですがfilterを使用したとき条件に合わない場合は違う結果を表示させることは可能なのでしょうか。
React
1{this.props.projects.filter(project => category.id == project.category.id).map(project => { 2 return ( 3 <div> 4 <p>{project.name}</p> 5 </div> 6 ) 7})}
また、map内で判定する方法もやってみたのですがこの場合も上記のような現象が起こってしまいます。
React
1{this.props.projects.map(project => { 2 if (category.id == project.category.id) { 3 return ( 4 <p>a</p> 5 ) 6 } else { 7 return ( 8 <p>b</p> 9 ) 10 11 } 12})}