2012-10-06 19 views
13

içine JavaScript Türü dizisi dönüştürmek için, ve ben normal JavaScript Array dönüştürmek istiyoruz. Bunu nasıl yapabilirim?nasıl bir JavaScript Float32Array sahip bir JavaScript Array

+1

Neden bir Array olmak için ona ihtiyacınız var? Bu cevap ararken insanlar için daha yararlı olur böylece kabul cevap JavaScript Türü Tanımlı Diziler, örneğin Int8Array, Float64Array vb Soru başlığın tümü için çalıştığını – Eric

+1

Not bunu yansıtacak değiştirilebilir. –

+0

Konuya ve soru formüle bir değişiklik teklifi gönderdim. – marcusstenbeck

cevap

0

Sen bunu yapabilirsin demektir herhangi dizide, olarak kullanabilirsiniz:

var arr = []; 
for (var i=0; i<myFloat32array.length; i++) arr[i] = myFloat32array[i]; 

Ama bunu dönüştürme yerine Float32Array olarak kullanmak için genellikle daha verimlidir.

Farklı türde değerleri karıştırmak istemiyorsanız, dönüştürmeyin.

31

Array için float32Array dönüştürmek üzere Array.prototype.slice öğesini kullanın. jsfiddle

var floatarr = new Float32Array(12); 
var array = Array.prototype.slice.call(floatarr); 
+0

ile yazılan dizileri değiştirmek istediğinizde olur! Teşekkür ederim. – stuax

+0

Katıl, işe yaramış gibi görünüyor, güzel numara! Array.prototype.join.call (floatarr, ',') –

+0

Bu, büyük dizilerde yığın boyutunu kolayca aşmaz mı? –

7

sen (maalesef IE dahil) eski tarayıcıları desteklemek gerekmez varsa, added to ES6 oldu Array.from, kullanabilirsiniz:

var array = Array.from(floatarr); 

her tarayıcının yeni sürümlerde bu now works IE dışında ve çoğu mobil tarayıcıda da çalışır.