2011-03-26 15 views

cevap

10

kullanım apply:

Math.min.apply(null,[1,2,3]); //=> 1 

From devguru:

Function.apply(thisArg[, argArray]) yöntemini uygulamak Bir işlevi çağırmak ve anahtar kelime bu kapsamda başvurmak ne belirlemenizi sağlar Bu fonksiyonun . BuArg argümanı bir obje olmalıdır. çağrısında, çağrılan işlev bağlamında, bu, buArg. Başvuru yönteminin ikinci argümanı bir dizisidir. Bu dizinin öğeleri, çağrılan işlevine argümanlar olarak geçirilecektir. ArgArray parametresi, bir dizinin değişkeni ya da bir işlevin artık kullanılmayan bağımsız değişkenleri özelliği olabilir. Dizi Math.min argüman olarak geçirilen için, ikinci,:

Bu durumda, ilk değişken (boş nedenle) bir önem taşımaktadır. Yani burada kullanılan 'hile'.

+0

Bu en basit çözümdür, ancak nasıl çalışır? –

+0

+1 Gerçekten hoş olanı. – vbence

0

bunu (bu durumda bir sayı veya NaN değil budur) bir dizi kaçırmak yok, sadece geçmesi Bu fonksiyona argümanlar olarak numaraları. Şunun gibi: yana

Math.min(1, 2, 3) 
+0

Ama var o zaman .. Bir dizide –

+0

@compile bu unsurları geçmesine vbence anlaşılacağı gibi bir şey kullanmak. –

+0

@ compile-fan: Neden zorundasınız? Fonksiyon, bir dizi değil argüman olarak sayıları bekliyor. Eğer bir diziyi bir işleve iletmeniz gerekiyorsa, dizininin elemanları ile Math.min() 'i çağırmadan önce bir dizi alan ve onu parçalayan Math.min()' için bir sarmalayıcı yazabileceğinizi varsayalım. (Ve tüm sayıların olduklarından emin olmak için girişi kontrol eder.) – David

1
Math.min(1, 2, 3) 
1 

, [1,2,3], bu NaN döndüren bir sayıya dönüştürülemez.

Daha: Mozilla Reference

1

Dizi ile yineleme gerekiyor. AFAIK'de JS'de array_min yoktur.

var i, min = arr[0]; 
for (i=1; i<arr.length; i++) 
    min = Math.min(min, arr[i]); 
İlgili konular