2010-12-27 3 views
4

<div id="dynamicTable" columns="26,40,41,21,71,39,23,19"> jQueryのこれは文字列の配列を作成し、数字

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

の文字列からint型配列を作成し、私は彼らがint型である必要があります。これを行う最善の方法は何ですか?

+1

チェンジ答えは間違いありません最もエレガントな可能性がありますが、これらの整数で何をする必要があるかによって、別の変数に新しい配列を格納するのではなく、 'map'関数で直接行うことができます。 –

+0

ありがとう!私に与えられた情報の量でできる限りベストを尽くしましたか:-) – changelog

+0

changelogとpatrick dwの両方がうまくいっていますか? – Mark

答えて

9

use $.parseJSONです。

例:

例:http://jsfiddle.net/ULkXy/

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

ここで単項+オペレータとのwhileループを使用して、別の方法です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

ねえ、それはかなり滑らかで動作します。 – Mark

+0

最後の解決策の問題は、IDの順序を逆転させることです。 IDを特定の順序で送信する必要がある場合はどうなりますか? – changelog

+0

@changelog:順序を逆転させません。配列を逆順に反復するだけです。 10個のアイテムがある場合、インデックス9はインデックス9の変更された値で上書きされます。次に8,7,6など。私が提供したリンクの例をクリックすると、 'alert() '' columns'属性の順序と同じ順序です。 – user113716

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