2012-01-11 56 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