[解決済み】TypeScript for ... of with index / key?
2022-04-12 06:59:01
質問
説明の通り こちら TypeScriptはforeachループを導入しています。
var someArray = [9, 2, 5];
for (var item of someArray) {
console.log(item); // 9,2,5
}
しかし、インデックス/キーがないのでは?というようなことを期待します。
for (var item, key of someArray) { ... }
解決方法は?
.forEach
はすでにこの能力を持っています。
const someArray = [9, 2, 5];
someArray.forEach((value, index) => {
console.log(index); // 0, 1, 2
console.log(value); // 9, 2, 5
});
しかし、もしあなたが
for...of
であれば
map
を配列のインデックスと値に設定します。
for (const { index, value } of someArray.map((value, index) => ({ index, value }))) {
console.log(index); // 0, 1, 2
console.log(value); // 9, 2, 5
}
少し長いので、再利用可能な関数にまとめるとよいでしょう。
function toEntries<T>(a: T[]) {
return a.map((value, index) => [index, value] as const);
}
for (const [index, value] of toEntries(someArray)) {
// ..etc..
}
イテラブルバージョン
ES3やES5をターゲットとする場合、この機能は
--downlevelIteration
コンパイルオプションで指定します。
function* toEntries<T>(values: T[] | IterableIterator<T>) {
let index = 0;
for (const value of values) {
yield [index, value] as const;
index++;
}
}
Array.prototype.entries() - ES6以上
ES6+の環境をターゲットにできるのであれば
.entries()
メソッドで説明されているように
Arnavionの回答
.
関連
-
[解決済み] ステートメント: %%i '現時点では予期しない' を表す一行。
-
[解決済み] C#がforeachで変数を再利用するのは理由があるのか?
-
[解決済み] foreachループの現在の反復処理のインデックスを取得するにはどうすればよいですか?
-
[解決済み] ( for... in ) と ( for... of ) の文の違いは何ですか?
-
[解決済み] JavaScriptのFor.Inループ - キーと値のペア
-
[解決済み] JavaScriptのfor...of構文でループのカウンタ/インデックスを取得する
-
[解決済み] Typescript によるインターフェース型チェック
-
[解決済み】PHPの'foreach'は実際どのように動作するのですか?
-
[解決済み】TypeScriptのインターフェースと型について
-
[解決済み] forループでbreakを使うのはバッドプラクティスですか?[クローズド]
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Luaのpairs()とipairs()の違いは何ですか?
-
[解決済み] ステートメント: %%i '現時点では予期しない' を表す一行。
-
[解決済み] Array.forEachでbreakを呼び出すようなショートサーキット
-
[解決済み] for-ofループ内でのES6配列の要素インデックスへのアクセス
-
[解決済み】ループ内のプリインクライメントとポストインクライメントの違い?
-
[解決済み] 'for'ループの最後の要素を検出するpythonic方法は何ですか?
-
[解決済み】TypeScript for ... of with index / key?
-
[解決済み] forループでbreakを使うのはバッドプラクティスですか?[クローズド]