😄
特定のキー名のときだけ処理を行わないというコード
特定のキー名のときだけ処理を行わないというコードの書き方
複数の条件式に当てはまる場合のみ、処理を行うというコードはよくあると思います
例えば、URLが/
、/posts
、/about
、/setting
のときだけ処理を行う場合、以下のように書いてしまうと、条件部分がとても長くなってしまいます。
if(router.pathname === "/" || router.pathname === "/posts" || router.pathname === "/about" || router.pathname === "/setting") {
// 処理を実行
}
しかし、array.some
を使うと、コードがすっきりするのでおすすめだと思ったのでメモ。
someメソッドは少なくとも一つの要素が一致する場合はtrue、しない場合はfalseを返し、配列は変更されない。
似たようなのでarray.every
メソッドがあるが、これはすべて一致する場合のみ、trueを返す
const keys = ["/", "/demo", "/privacy", "/terms"];
const isMatch = (targetKey: string) => keys.some((v) => v === target);
if(isMatch) {
// 処理
}
またincludes
でも同じような処理できそう
const keys = ["/", "/demo", "/privacy", "/terms"];
if(keys.includes(key)) {
// 処理
}
参考
最後に
間違っていること、この書き方のほうがより処理が早くなるなどあればコメントに書いていただけると幸いです。
よろしくお願いいたします。
Discussion