2018-09-08

jQueryの.each()を用いたループが抜けられない!? breakではなくreturnで抜ける

jQueryに関する記事

jQuery.eachを使ってループ処理を行う際、処理を抜けたい場合にうまくループを抜けられないことがあります。

jQueryを使用せずに、javascriptのfor文などのループから抜ける場合は、break;を使い処理を抜けます。しかし、jQueryの.each()でbreakを使用するとうまく動作せず、エラーが表示されてしまいます。

解決方法を調べてみました。

ループを抜けるには、breakではなくreturnを使う

javascriptのループ例

for (var i = 0; i < 10; i++) {
	if (i == 7) {
		// ループから抜ける
		break;
	}
}

jQueryのeachでループを抜けるにはreturn = false;を使いましょう。ちなみにcontinueの場合はreturn = true;を使用すること。

jQueryのループ例

var obj = {1:"tokyo", 2:"osaka", 3:"kyoto", 4:"tottori", 5:"fukuoka"};

$.each(obj, function(i, value){
	if (value == "tottori") {
		// breakに相当
		return false;
	} else {
		// continueに相当
    	return true;
	}
});

スポンサーリンク

まとめ

配列やオブジェクトでループする際には、jQueryのeachを好んで使っています。javascriptのfor文よりもシンプルで、直感的な感じがあって好きなんですよね。

今まで問題にならなかったということは、breakしたことがなかったんでしょうか…。今後は意識してみます。