My days of...

生活のことなど、がんばろう

Forループを使わなくても同じ実行結果になるメソッドがある場合はそのほうがよいのかな

JavaScriptのメモ。

以前どこかのブログだか記事かで、JavaScriptはfor分のループは使わない方がいいとか、という内容がありました。それで代わりに使うのは、forEachやmapなどを利用するのがいいとか。whileも入る?とその時は考えていた気がします。

その中にevery()メソッドもあるのでしょうか。

問題として

配列 arr = ['Hello', 'hello'] があるとして、2番目の要素が1番目の要素に全て含まれるかどうかのテスト。大文字、小文字は問わない。
例えば ['Hello', 'hello']であれば2番目文字列が全て1番目の文字列に含まれるため、trueを返す。
['Hello', 'Hey']の場合、2番目の文字列内の'y'が1番目の文字列には含まれないので、falseを返す。
['Aline', 'line']の場合、2番目の文字列が全て1番目の文字列 'Aline' に含まれるため、trueを返す。

自分の回答はfor文を利用しました。

function mutation(arr) {
for (let i = 0; i < arr[1].length; i++) {
if (arr[0].toLowerCase().indexOf(arr[1][i].toLowerCase()) === -1) {
return false;
}
}
return true;
}

こんな感じ

模範回答の中にはevery()を利用して、

return arr[1].toLowerCase().split("").every(l => { return arr[0].toLowerCase().indexOf(l) != -1 }

 な感じのコードが。MDN Web docにも当然あったので、for文を利用しない書き方がたくさんあるな、と思った次第。

developer.mozilla.org

 

初めてのJavaScript 第3版 ―ES2015以降の最新ウェブ開発

初めてのJavaScript 第3版 ―ES2015以降の最新ウェブ開発