2010-12-27 22 views
4

<div id="dynamicTable" columns="26,40,41,21,71,39,23,19"> jQuery int Array aus Reihe von Zahlen

 
var columns = $('#dynamicTable').attr('columns'); 
var attributeIds = new Array(); 
attributeIds = columns.split(','); 

Dies erzeugt ein Array von Strings zu schaffen, ich brauche sie ints zu sein. Was ist der beste Weg, dies zu tun?

+1

Changelog Antwort ist ohne Zweifel der die meisten Elegant möglich, aber abhängig davon, was Sie mit diesen Ganzzahlen tun müssen, können Sie dies möglicherweise direkt in der 'map'-Funktion tun, anstatt das neue Array in einer separaten Variablen zu speichern. –

+0

Danke! Hab das Beste was ich konnte mit der Menge an Informationen die mir gegeben wurden :-) – changelog

+0

sowohl changelog als auch patrick dw arbeiten, was ist besser/schneller? – Mark

Antwort

9

Sie könnten use $.parseJSON.

Beispiel:http://jsfiddle.net/ULkXy/

var columns = $('#dynamicTable').attr('columns'); 
var attributeIds = $.parseJSON('[' + columns + ']'); 

Hier ist ein weiterer Weg, um eine while Schleife mit dem unären + Operator:

Beispiel:http://jsfiddle.net/ULkXy/1/

var columns = $('#dynamicTable').attr('columns'); 
var attributeIds = columns.split(','); 
var len = attributeIds.length; 

while(len--) { 
    attributeIds[len] = +attributeIds[len]; 
} 
+1

Hey, das ist ziemlich glatt und funktioniert. – Mark

+0

Problem mit dieser letzten Lösung ist, dass es die Reihenfolge der IDs umkehrt. Was ist, wenn die IDs in einer bestimmten Reihenfolge gesendet werden müssen? – changelog

+0

@changelog: Es wird die Reihenfolge nicht invertiert. Es wird nur rückwärts durch das Array iteriert. Wenn 10 Elemente vorhanden sind, wird Index 9 durch einen geänderten Wert von Index 9 überschrieben. Dann 8, 7, 6, usw. Wenn Sie auf den Beispiellink klicken, den ich zur Verfügung gestellt habe, sehen Sie, dass das Ergebnis in der 'alert() 'hat die gleiche Reihenfolge wie im Attribut 'columns'. – user113716

7
var columns = $('#dynamicTable').attr('columns'), 
    attributeIds = $.map(columns.split(','), function(val, idx) { return parseInt(val, 10) }); 
Verwandte Themen