[解決済み] JavaScriptのforループを止めるには?
2022-03-07 12:32:21
質問
私はこのJavaScriptを使って、配列を繰り返し処理し、一致する配列要素を見つけることができます。
var remSize = [],
szString, remData, remIndex, i;
for (i = 0; i < remSize.length; i++) {
// I'm looking for the index i, when the condition is true
remSize[i].size == remData.size ? remIndex = i : remIndex = -1;
}
配列には、これらの "サイズ" が含まれます。
["34", "36", "38"...]
.
remData.size
は探している"サイズ"です(例:"36")。
インデックスを返したい
i
検索するサイズがインデックスの中にあれば そうでなければ、私は
-1
. 何か良い方法はないでしょうか?
どのように解決するのですか?
を停止するには
for
JavaScript では、ループを早期に終了させるには
break
:
var remSize = [],
szString,
remData,
remIndex,
i;
/* ...I assume there's code here putting entries in `remSize` and assigning something to `remData`... */
remIndex = -1; // Set a default if we don't find it
for (i = 0; i < remSize.length; i++) {
// I'm looking for the index i, when the condition is true
if (remSize[i].size === remData.size) {
remIndex = i;
break; // <=== breaks out of the loop early
}
}
ES2015(通称ES6)環境であれば、このために
特定
を使用する場合は
Array#findIndex
(エントリーのインデックスを見つける) または
Array#find
(エントリ自体を見つける)、どちらもシム/ポリフィルドが可能です。
var remSize = [],
szString,
remData,
remIndex;
/* ...I assume there's code here putting entries in `remSize` and assigning something to `remData`... */
remIndex = remSize.findIndex(function(entry) {
return entry.size === remData.size;
});
Array#find
:
var remSize = [],
szString,
remData,
remEntry;
/* ...I assume there's code here putting entries in `remSize` and assigning something to `remData`... */
remEntry = remSize.find(function(entry) {
return entry.size === remData.size;
});
Array#findIndex
は、コールバックが初めて真偽値を返したときに停止し、そのコールバックの呼び出しに対するインデックスを返します。
-1
が一度も真実の値を返さなかった場合。
Array#find
も探しているものを見つけると停止しますが、 そのインデックスではなくエントリを返します (あるいは
undefined
コールバックが真実の値を返さない場合)。
ES5 互換の環境 (または ES5 シム) を使用している場合、新しい
some
機能
は、コールバックが真実の値を返すまでコールバックを呼び出します。
var remSize = [],
szString,
remData,
remIndex;
/* ...I assume there's code here putting entries in `remSize` and assigning something to `remData`... */
remIndex = -1; // <== Set a default if we don't find it
remSize.some(function(entry, index) {
if (entry.size === remData.size) {
remIndex = index;
return true; // <== Equivalent of break for `Array#some`
}
});
jQueryを使っている場合は
jQuery.each
を使用すると、次のようになります。
var remSize = [],
szString,
remData,
remIndex;
/* ...I assume there's code here putting entries in `remSize` and assigning something to `remData`... */
remIndex = -1; // <== Set a default if we don't find it
jQuery.each(remSize, function(index, entry) {
if (entry.size === remData.size) {
remIndex = index;
return false; // <== Equivalent of break for jQuery.each
}
});
関連
-
[解決済み】SyntaxError: 'import' と 'export' は 'sourceType: module' とだけ表示されるかもしれない - Gulp
-
[解決済み】DOMException: サポートされているソースが見つからなかったため、読み込みに失敗しました。
-
[解決済み】Uncaught ReferenceError。Firebase は定義されていません。
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptのオブジェクトをループスルーまたは列挙するにはどうすればよいですか?
-
[解決済み] JavaScriptで文字列をbooleanに変換するにはどうしたらいいですか?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] jQueryで、ユーザーがそのフィールドを編集している間、テキストフィールドの最初の文字を大文字にするにはどうすればよいですか?
-
[解決済み] Uncaught TypeError: 未定義のプロパティ 'top' を読み込めない
-
[解決済み】JavaScriptのisset()に相当するもの
-
[解決済み】jquery $.ajaxオブジェクトのresponseJSONプロパティを取得する方法 [重複]。
-
[解決済み】JavaScriptのinnerHTMLで要素が更新されない
-
[解決済み】JavaScript ランタイムエラー:'$'が未定義です。
-
[解決済み】このオブジェクトの "forEach "はなぜ関数でないのですか?
-
[解決済み】JavaScriptで関数が存在するかどうかを確認する方法は?
-
[解決済み】Vueが定義されていない
-
[解決済み] Uncaught (in promise) TypeError: フェッチに失敗してCorsエラー