Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8701

JavaScriptでPythonのenumerate関数を実行するには

$
0
0

はじめに

Node.jsを使ったWebアプリの開発にて、forEachでリストを回していたのですが、
急遽インデックスの情報も必要になりました。

そこで次のようなソースコードを書いたものの、「もっといい方法がある」と仲間に指摘されました。
実際に試したところ非常に便利だったことと、Pythonのenumerate関数に近いものを感じたので、
for文でインデックスとバリューを同時に取得する方法として、記事に残します。

ary=["bar","foo","hoge"]leti=0ary.forEach(function(value){console.log(i,value);i++});// 0 bar// 1 foo// 2 hoge

実行環境

  • Node.js v12.16.3

検証環境

  • Paiza.io(Python 3.8.2)
  • Paiza.io(Node.js v12.18.3)

そもそもenumerate関数とは

引数に指定したリストの、インデックスとバリューを取得する関数です。

ary=["bar","foo","hoge"]fori,iteminenumerate(ary):print(i,item)#  0 bar
#  1 foo
#  2 hoge

for文でインデックスとバリューを同時に取得する

forEachは、第二引数にインデックスを指定できる

forEach関数において 第一引数はリスト、第二引数はインデックスを取ります。

このインデックスは、ループ回数が増加するごとに自動的にインクリメントされるため、
i++i += 1と記述する必要はありません。

ary=["bar","foo","hoge"]ary.forEach(function(value,i){console.log(i,value);});// 0 bar// 1 foo// 2 hoge

for inを使う

for inはリストのインデックスを取得します。
次のようなソースコードにより、インデックスとバリューを取り出します。

ary=["bar","foo","hoge"]for(iinary){console.log(i,ary[i])}// 0 bar// 1 foo// 2 hoge

一方で、for inでは次のように予期しない挙動を示す場合もあるので、
利用には注意が必要そうです。

vardata=['apple','orange','banana'];//配列オブジェクトにhogeメソッドを追加Array.prototype.hoge=function(){}for(varkeyindata){console.log(data[key]);}// apple// orange// banana// function(){}

参考


Viewing all articles
Browse latest Browse all 8701

Trending Articles