2012-01-11 57 views
1
function split(str) 
{ 
var array = str.split(';'); 
var test[][] = new Array(); 
    for(var i = 0; i < array.length; i++) 
    { 
     var arr = array[i].split(','); 

     for(var j = 0; j < arr.length; j++) 
     { 

      test[i][j]=arr[j]; 
     } 
    } 
} 

onchange =「split('1,2,3; 4,5,6; 7,8,9; a,b,c; d,e,f ; g,h,i')「在java腳本中處理多維數組無效

它沒有工作。我需要將此字符串拆分爲6 * 3多維數組

+1

JavaScript不支持多維數組!在JavaScript中,你只能聲明一維數組,其中每個元素包含其他一維數組。 – 2012-01-11 06:14:30

回答

1

var array[][] = new Array()是不能用於聲明數組有效的語法。 Javascript數組是一維的,讓你將它們嵌套在一起。這意味着您需要在自己開始附加到自己的每個插槽之前插入一個新陣列。

像這樣:http://jsfiddle.net/Squeegy/ShWGB/

function split(str) { 
    var lines = str.split(';'); 
    var test = []; 
    for(var i = 0; i < lines.length; i++) { 
     if (typeof test[i] === 'undefined') { 
      test[i] = []; 
     } 

     var line = lines[i].split(','); 
     for(var j = 0; j < line.length; j++) { 
      test[i][j] = line[j]; 
     } 
    } 

    return test; 
} 

console.log(split('a,b,c;d,e,f')); 
0

var test[][]是無效的JavaScript語法。

要創建一個二維數組,它是一個數組數組,只需聲明您的數組並將數組推入其中即可。

事情是這樣的:

var myArr = new Array(10); 
    for (var i = 0; i < 10; i++) { 
    myArr[i] = new Array(20); 
    } 

我會讓你將此您的問題。另外,我不喜歡你的函數的名字,嘗試使用與標準不同的東西,以避免當你從現在開始閱讀代碼幾天或幾個月時出現混淆。

+1

幾乎沒有理由使用'新的Array()',甚至更少的理由使用'新的Array(整數)' – 2012-01-11 05:15:28

+0

爲了擴大Alex的說法,使用'[]'而不是'new Array() '。而且你不需要提供大小,因爲JS數組是動態的,所以無論數組的當前長度如何,總是可以在最後添加新元素。 (請注意,'[10]'不會創建一個包含10個元素的數組,它會創建一個數組,其中包含一個值爲10的元素。) – nnnnnn 2012-01-11 06:35:42

+0

我知道這個謝謝。關於使用'new Array()'我只是試圖保持OP代碼的外觀和感覺,以及整數,我試圖解釋數組是如何工作的,因爲看起來OP是缺乏理解。但是,你完全正確,'[]'是要走的路 – 2012-01-11 07:09:58

0
function split(str) 
{ 
    var array = str.split(';'), 
     length = array.length; 

    for (var i = 0; i < length; i++) array[i] = array[i].split(','); 

    return array; 
} 

這裏的小提琴:http://jsfiddle.net/AbXNk/

-1
var str='1,2,3;4,5,6;7,8,9;a,b,c;d,e,f;g,h,i'; 
var arr=str.split(";"); 
for(var i=0;i<arr.length;i++)arr[i]=arr[i].split(","); 

現在arr是具有6個元件的陣列,每個元素包含陣列3層的元件。

訪問元素:

alert(arr[4][2]); // letter "f" displayed