ある単語の中に特定の文字列(複数)のどれか一つでも含まれていれば、その単語を除外した配列をつくる処理を考えていて、次の2つの方法を考えました。
該当のソースコード
js
1const words = ['justify', 'format', 'only', 'unknown', 'performance'] 2 3// [方法1] some と includes を使う 4const ignored = ['fy', 'un', 'form'] 5const arr = words.filter((word) => { 6 return !ignored.some((str) => word.includes(str)) 7}) 8console.log(arr) // Array [ "only" ] 9 10// [方法2] 正規表現を使う 11const ignored = /fy|un|form/ 12const arr = words.filter((word) => { 13 return !ignored.test(word) 14}) 15console.log(arr) // Array [ "only" ]
方法1は除外したい文字列の管理や追加が(個人的に)しやすいですが、
反復メソッド(filter
)の中に反復メソッド(some
)が入っているので
少し処理の内容が分かりづらいし、遅いのかなと思っています。
方法2は正規表現を使うので方法1より柔軟な除外パターンが記述でき、処理内容も簡潔ですが、
(小さな問題ですが)僕個人、正規表現に苦手意識があります。
速度面や分かりやすさ、保守のしやすさ等ありますが、
皆さんならどちらの方法を好んで使いますか?
また、こんな方法もあるよーみたいなのがあればぜひ教えて下さい!

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。