JavaScriptで可変長の引数を取るメソッドではapply()を使う
備忘録
配列の最小値を取得したいときMath.mix()
を使用したが、NaN
が返ってきた。
どうやらapply()
を使う必要があったらしい。
const arr = [ '1', '4', '6', '3' ]; console.log(Math.min(arr)); // NaN console.log(Math.min.apply(null, arr)); // 1
applyとは何か
apply() メソッドは与えられた this 参照値と、配列 (もしくは配列風のオブジェクト) の形で与えられた引数を用いて関数を呼び出します。
参考:MDN - Function.prototype.apply()
apply()
を使用することで、配列(または配列風のオブジェクト)を引数として渡すことができるらしい。
挙動の確認
const arr = [ '1', '4', '6', '3' ]; console.log(Math.min(arr)); // NaN console.log(Math.min.apply(null, arr)); // 1 console.log(Math.max(arr)); // NaN console.log(Math.max.apply(null, arr)); // 6 console.log(Math.min( '1', '4', '6', '3' )) // 1 console.log(Math.max( '1', '4', '6', '3' )) // 6 console.log(Math.min(...arr)) // 1 console.log(Math.max(...arr)) // 6
まとめ:可変長の引数を受ける関数はapply()
を使って配列(または配列風のオブジェクト)を引数に渡そう。