mapについて
当サイトのリニューアル作業に時間をあてるため、掲示板の投稿は当分停止させていただきます。
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var ret = arr.map(Math.pow);
console.log(ret);
var ret = arr.map(Math.pow);
console.log(ret);
下記の出力となりますが、
[1, 2, 9, 64, 625, 7776, 117649, 2097152, 43046721]
なぜ、上記の出力となりますか。
powは引数が2個必要の為、エラーとなると想定していました。。。
龍 さん
04月14日 05時59分
龍さん、こんにちは。
念のためマニュアルをチェックして見てみたところ、arr.mapで呼び出すコールバック関数には、自動的に以下のパラメータが与えられるようです。
valueは配列の値、indexは配列のインデックス、arrayは配列全体です。
以下の部分を、
以下のように変更すると確認しやすいと思います。
というわけで、以下は
以下の様な感じで呼び出されていたため、
当初のような出力結果となったと思われます。
(Math.powにarrayの第三引数があっても無視されているようでした)
参考: Array.prototype.map() - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/map"]https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/map
※システム上リンクが張れなかったのでURLのみ掲載
念のためマニュアルをチェックして見てみたところ、arr.mapで呼び出すコールバック関数には、自動的に以下のパラメータが与えられるようです。
function(value, index, array) {
}
}
valueは配列の値、indexは配列のインデックス、arrayは配列全体です。
以下の部分を、
var ret = arr.map(Math.pow);
以下のように変更すると確認しやすいと思います。
var ret = arr.map(function(value, index, array) {
console.log(value + ' ' + index);
console.log(array);
});
console.log(value + ' ' + index);
console.log(array);
});
というわけで、以下は
var ret = arr.map(Math.pow);
以下の様な感じで呼び出されていたため、
Math.pow(1, 0, array);
Math.pow(2, 1, array);
Math.pow(3, 2, array);
// ~略~
Math.pow(2, 1, array);
Math.pow(3, 2, array);
// ~略~
当初のような出力結果となったと思われます。
(Math.powにarrayの第三引数があっても無視されているようでした)
参考: Array.prototype.map() - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/map"]https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/map
※システム上リンクが張れなかったのでURLのみ掲載
馬場誠 さん
04月14日 08時08分