JavaScript : map関数
map関数
return内のlistにデータをずらずら書くのではなくreturnの外にデータは置く
const items = [
{name:"xx" , url:"zzz"},
{name:"xx" , url:"zzz"},
]
map関数によりreturn内がコンパクトになる {}
{bennriLink.map((item) => (
<div
key={item.name}
>
<a href={item.url} target="_blank">
<p className="px-1">{item.name}</p>
</a>
</div>
))}
エラー
- *1 mapエラーの一番の原因はkey={} をつけていないから
- *2 あと、map関数内で(() ⇒ {} ) 中括弧を使っている場合もエラーになる。この場合はエラー表示が出ないので注意が必要。三項演算の( cond ? a : b )前半が意図せず表示される場合はこのミスが多い
場合によってCSSの内容を変える例
mapの性質は参考演算と相性が良い
<TableCell
className={
item.point === "yes" ? "text-red-500" : "text-blue-500"
}
>
{item.point}
</TableCell>
- yesであればtailwindの赤、noならば青
map時に順序を決める例
リスト :
const lists = [{ name: "", color: "" }];
順番通りにする関数 :
const sortedList = lists.sort((first, last) => {
const Order = ["blue", "red", "yellow"];
return Order.indexOf(first.color) - Order.indexOf(last.color);
});
- colorごとに順番で表示する 上記は配列順
- 引数の first, last は任意でよく、単にorder配列の順番通りになる
const Order = ["blue", "red", "yellow" , ""];
空白が一番上に来るとダサいので最後に “” を追加するといい
↑ これがエラーになる場合:
const Order = ["blue", "red", "yellow"]; の配列内に lists で定義しているものが入っていないとエラーになる
= Orderでは全ての color を網羅する必要あり
一方で、Order内には lists で定義していない color があってもOK
← Go home