在javascript中处理多维数组不起作用

时间:2012-01-11 05:04:47

标签: javascript

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];
        }
    }
}

平变化= “分裂( '1,2,3; 4,5,6; 7,8,9; A,B,C。; d,E,F; G,H,I')”

它不起作用。我需要将此字符串拆分为6 * 3多维数组

4 个答案:

答案 0 :(得分: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'));

答案 1 :(得分:0)

var test[][]是一种无效的javascript语法。

要创建一个2D数组(一个数组数组),只需声明数组并将数组推入其中。

这样的事情:

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

我会让你将此问题应用于你的问题。另外,我不喜欢你的功能名称,尝试使用与标准不同的东西,以避免在你从现在开始几天或几个月阅读代码时产生混淆。

答案 2 :(得分: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/

答案 3 :(得分:-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