JavaScript
1 var data = [1,2,3,4,5]; 2 data.forEach(function(v,i,a){a[i] = v + 1;}); 3 console.log(data); //[2,3,4,5,6]
この場合のiがよくわかりません
添字ということは確かなのですが、定義されてなくても機能しているので不思議に思いました。
どのような仕様なのか教えていただきたいです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
「定義されなくても」という意味がわかりませんが、function(v,i,a)
の所で引数として宣言されています。
2番目の引数が、インデックスだというのは、foEach
の意味として定義されています。
リファレンスには、
callback は、要素の値、要素のインデックス、走査されている Array オブジェクトという 3 つの引数をともなって呼び出されます。
と書いてありますね。
投稿2015/11/07 12:13
総合スコア84529
0
ベストアンサー
Array.prototype.forEach() - JavaScript | MDN https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
callback は、要素の値、要素のインデックス、走査されている Array オブジェクトという 3 つの引数をともなって呼び出されます。
forEach()からの返り値の第二引数にすぎません。
投稿2015/11/07 12:15
総合スコア98
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/11/07 13:17 編集
退会済みユーザー
2015/11/07 14:06
0
javascript
1var data = [1,2,3,4,5]; 2data.forEach(function(v,i,a){a[i] = v + 1;}); 3console.log(data);
これは、以下のコードと同じような処理を記述したものです。
javascript
1var data = [1,2,3,4,5]; 2var fn = function(v,i,a){a[i] = v + 1;} 3fn(data[0],0,data); 4fn(data[1],1,data); 5fn(data[2],2,data); 6fn(data[3],3,data); 7fn(data[4],4,data); 8console.log(data);
data配列の要素の先頭から全てに対して、コールバック関数を実行します。
vやiにあたる部分が0から始まって勝手にインクリメントされているのは、それが仕様だからです。
投稿2015/11/07 13:49
編集2015/11/07 14:00総合スコア2068
0
変化したのは「値」であって「インデックス」は変化していないのですが、その辺りを誤解していませんか?
JavaScript
1var data = [1, 2, 3, 4, 5]; 2 3data.forEach(function (value, index, array){ 4 array[index] = {index: index, value: value + 1}; 5}); 6 7console.log(data); // [{index: 0, value: 2}, {index: 1, value: 3}, {index: 2, value: 4}, {index: 3, value: 5}, {index: 4, value: 6}]
投稿2015/11/07 12:59
編集2015/11/07 23:21総合スコア18162
0
投稿2015/11/07 12:16
総合スコア22324
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/11/07 12:27
2015/11/07 13:09
退会済みユーザー
2015/11/07 14:05
2015/11/07 14:30
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/11/07 12:25
2015/11/07 12:31
2015/11/07 14:36