2011-11-22 27 views
18

Sayfada bir dizilim var ve bunlardan bir dizi int istiyorum.javascript int dizgisi int dizilimi

<div id="TheData">2,3,0,43,23,53</div> 

yazıyorum:

var ArrayData = ($('#TheData').html()).split(','); 

Ancak ArrayData dizelerden oluşan bir dizi haline gelir. Bir dizi inten nasıl alabilirim? HTML'deki bazı öğelerin 0'a eşit olabileceğini unutmayın.

Teşekkürler.

+0

olası yinelenen (http://stackoverflow.com/ sorular/4437916/dönüştürmek-all-elements-in-bir-dizi-tamsayı-in-javascript) –

cevap

25
var ArrayData = $.map($('#TheData').text().split(','), function(value){ 
    return parseInt(value, 10); 
    // or return +value; which handles float values as well 
}); 

Sen kod from MDN ile eski tarayıcılara Array.prototype.map() ekle dizide

+5

Bu $ .map ($ ('# TheData') olmalıdır. text(). bölünmüş (' , '), işlev() {...}); '. –

+1

Not: Bu ['jQuery.map'] (http://api.jquery.com/jquery.map/), ancak [' Array # map'] (https: // geliştirici) 'nin bir örneği değildir. mozilla.org/en/JavaScript/Reference/Global_Objects/Array/map). –

+0

Bu, (n) ... parseInt (n, 10) işlevini eklemek için gereken bir dizi NaN döndürdü. – frenchie

22
var ArrayData = $('#TheData').html().split(',').map(Number); 

elemanlarının her biri üzerinde parseInt arayarak ints için dizeler dizisi dönüştürmek için $.map kullanabilirsiniz. o $.prototype.map() çalışmayacak olsa


Sen, aynı şekilde jQuery'nin $.map() kullanabilirsiniz.

var ArrayData = $.map($('#TheData').html().split(','), Number); 
+1

Bu, yalnızca dizideki tam sayılara dönüşen dizeler varsa tamsayıları döndürür. – kennebec

+1

@kennebec: Eh, evet. Korkarım yaptığınız noktayı anlamıyorum. – RightSaidFred

+0

Son kullanıcı, ondalık sayıları içerecek şekilde metni değiştirirse, ints yerine şamandıralarla sonuçlanabilir. Bu bazı senaryolarda tamam olabilir, ancak onları beklemeyenler için beklenmedik sonuçlara neden olabilir. – Slobaum