Hatena::Groupactionscript

ConquestArrow.addEventListener();

2007-07-04

[][]いくつあるかわからない複数の数の最大値・最小値をMath.max()/Math.min()で求める方法 23:53 はてなブックマーク - いくつあるかわからない複数の数の最大値・最小値をMath.max()/Math.min()で求める方法 - ConquestArrow.addEventListener();

複数の数値の最大値・最小値を求めるには、Math.max()/Math.min()を使う。

var a:uint = 10;
var b:uint = 20;

trace("max",Math.max(a, b));	//max 20
trace("min",Math.min(a, b))l	//min 10

AS3では、Math.max()/Math.min()引数は可変長引数*1なので、2つ以上の数を比較することもできる。

trace("max",Math.max(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));	//max 10

3つ以上の数を比較できるのはなかなか便利なのだが、比較したい数の項目数がいくつあるかわからない時には使えない。

var a:Array = new Array();
for(var i:uint=0; i<someItemsLength; i++){
	a[i] = procItem(i);	//項目数が不定の配列
}

//配列aの項目の値の中で最大値を求めたい
Math.max(a[0], a[1], a[2], a[3], …);	//いくつあるか分からないので引数に渡せない

また、比較したい数の項目数が分かっていたとしても、項目数が多い場合にいちいち記述するのは面倒だ。

//100ある数のうち最大値を求めたい
Math.max(a, b, c, d, e, f, g, h, …	//全部書くの??

しょうがないので、配列を受け取って最大値・最小値を求める独自の関数を作ったりするのだが、やっぱりネイティブのAPIを使いたいもの。実は、次の方法で可能。

//任意の長さの配列
var a:Array = new Array();

Math.max.apply(null, a);	//配列aの項目の中での最大値が求められる

Function.apply()を使うのが肝。Function.apply()Function.call()とはことなり、第二引数は配列である。なので、Math.max()/Math.min()のように可変長引数の関数に、配列の中身を引数として渡すことが可能になる。

基本といえば基本なのだが、うっかり忘れがちなのでメモ。

*1:いわゆる、「...rest」

FarazFaraz2015/09/30 16:42So much info in so few words. Tolosty could learn a lot.

NaTaliaNaTalia2015/10/09 07:36You get a lot of respect from me for writing these helpful <a href="http://ugheifvi.com">arcleits.</a>

HeldaHelda2015/10/09 11:59What a plauesre to find someone who thinks through the issues http://grxrdvb.com [url=http://virdwla.com]virdwla[/url] [link=http://gtdprbx.com]gtdprbx[/link]

StarlyStarly2015/10/10 06:42It was dark when I woke. This is a ray of <a href="http://uuozdfvm.com">sunishne.</a>

YoshieYoshie2015/10/12 07:12I could watch Scniedlhr's List and still be happy after reading this. http://ewlkhoqb.com [url=http://zzopexb.com]zzopexb[/url] [link=http://gtcsgj.com]gtcsgj[/link]

CliffHapCliffHap2019/01/09 17:16Joe Bonamassa is a famous country singer, so don't miss the possibility to visit <a href=http://joebonamassatour.com/>Joe Bonamassa Charleston tickets </a>

GeorgeUrgefGeorgeUrgef2019/01/17 14:23Sir Elton John is my favourite singer of the world. Elton fans, let's unite at https://www.facebook.com/Elton-John-Tour-Tickets-Concerts-219000645159063/! Full list of Elton's Concerts in the USA and Canada!

MoviHapMoviHap2019/01/18 17:07Showbox is a must-have APK-app for Android. It also works for Mac. <a href=http://butterfly015.tumblr.com>http://butterfly015.tumblr.com</a>

MoviHapMoviHap2019/01/25 20:24Showbox is a must-have APK-app for Android. It also works for Mac. <a href=http://www.marcosantagata.it/commenti?id_box_container=19745&id_box=49644&id_lingua=1>http://www.marcosantagata.it/commenti?id_box_container=19745&id_box=49644&id_lingua=1</a>

KimesdarSKimesdarS2019/02/13 02:03Interested in hardrock? How about KISS? They are on a tour at the moment all across Canada and USA. Click on http://iconindustrialcontrols.com/2013/03/20/10/ to know more about KISS concert in 2019.

CarrieSCarrieS2019/03/10 03:11Carrie Underwood is my favourite US singer. She is young, beautiful and charming female in her 30s. Her strong voice takes me away from all issues of this world so I start enjoy my life and listen songs created by her. Now the singer is on a Cry Pretty 360 Tour started in May of 2019. The concerts scheduled for the whole 2019, up to the 31st of October. Tickets are available for all men and women with different income. If you are a country music lover as me, then you must visit at least one Carrie's concert. All tour dates are available at the <a href=https://carrieunderwoodtour.com>Carrie Underwood tour Buffalo</a>. Open the website and make yourself familiar with all Carrie Underwood concerts in 2019!