[解決済み] 配列に出現するすべての要素のインデックスを求めるには?
2022-05-08 13:16:24
質問
JavaScriptの配列で、ある要素、例えば「Nano」のすべてのインスタンスのインデックスを見つけようとしています。
var Cars = ["Nano", "Volvo", "BMW", "Nano", "VW", "Nano"];
を試してみました。 jQuery.inArray などがあります。 .indexOf() しかし、それはその要素の最後のインスタンスのインデックス、すなわちこの場合は5を与えるだけでした。
すべてのインスタンスで取得するにはどうすればよいですか?
解決するには?
その
.indexOf()
メソッド
は、検索を開始するインデックスを指定するオプションの第2パラメータを持つので、ループ内でこれを呼び出して、特定の値のすべてのインスタンスを見つけることができます。
function getAllIndexes(arr, val) {
var indexes = [], i = -1;
while ((i = arr.indexOf(val, i+1)) != -1){
indexes.push(i);
}
return indexes;
}
var indexes = getAllIndexes(Cars, "Nano");
インデックスをどのように使用したいのかが明確になっていないので、私の関数はインデックスを配列として返します(値が見つからない場合は空の配列を返します)が、ループ内で個々のインデックス値を使って別のことをすることも可能です。
UPDATE: VisioNさんのコメントにあるように、単純なforループの方が同じ仕事を効率的にこなせますし、理解しやすいのでメンテナンスもしやすいと思います。
function getAllIndexes(arr, val) {
var indexes = [], i;
for(i = 0; i < arr.length; i++)
if (arr[i] === val)
indexes.push(i);
return indexes;
}
関連
-
[解決済み】React - uncaught TypeError: 未定義のプロパティ 'setState' を読み取れない
-
[解決済み] 要素外でのクリックを検出するにはどうすればよいですか?
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (JavaScript)
-
[解決済み] PHPで配列から要素を削除する
-
[解決済み] JavaScriptの配列で一意な値をすべて取得する(重複を排除する)。
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
JSクロスドメインソリューション リアクト構成 リバースプロキシ
-
要素ツリー制御によるvueTreeテーブル
-
Vueの要素ツリーコントロールに破線を追加する説明
-
HTML+CSS+JavaScriptで簡単な三目並べゲームを作成する。
-
[解決済み】Node.js getaddrinfo ENOTFOUND
-
[解決済み] Web API エラー - このリクエストはブロックされました; コンテンツは HTTPS で提供されなければなりません
-
[解決済み】ReactJSでエラー発生 Uncaught TypeError: Super expression は null か関数でなければならず、undefined ではありません。
-
Uncaught TypeError: null のプロパティ 'offsetHeight' を読み取れませんでした。
-
モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory, scandir 'D:\.... \node_modules
-
JavaScriptのgetElementById、getElementsByTagNam、getElementsByClassNameの違いと使い方