JavaScript的3D数组和.split()方法

3
    function parser(data){
    var saveSections = data.split("\r");
    var parsed = new Array();
    var tempCatch = "";
    var CatchTwo = [];
    //saveSections[0] = saveSections[0].split(",");
    for (var i = 0; i < saveSections.length; i++){
        saveSections[i] = saveSections[i].split(",");
        for (var j = 0; j < saveSections.length; j++){
            tempCatch = saveSections[0][0].split(":");
            //saveSections[0][0] = tempCatch;

        }

    }
    return tempCatch;
}

好的,有一个问题。这个函数在我取消注释//saveSections[0][0] = tempCatch;之前可以正常工作。

当我这样做时,调试器会抛出异常:

Uncaught TypeError: saveSections[0][0].split is not a function

那指的是这一行:
tempCatch = saveSections[0][0].split(":");

1
你需要迭代第三层,因为数组没有split方法。 - Teemu
但我正在分割2D数组的元素。在分割后它将变成3D。 - Michael Kurowski
你能提供一下这个函数接收到的输入样例吗? - Vale
它包含了一些字符,这些字符在此处不会显示。这是加密算法的一部分。 :(D:Ch,XPL:1,XPS:987654321,XPE:987654320,E:0,C:2,AC:1,P:0,G:,A:1,S:1,HC:1,H:1,SCO:1,SCR:1,K:2,B:0,BT:0,IP:94.231.225.11,ID:0,IS:1,CM:0D:Eq,I:1,T:1,L:1,C:BBAAD:Eq,I:2,T:2,L:1,C:QIAAD:In,I:25,T:7,Q:30D:Op,M:1,S:1,P:1D:SP,S:BBBBBBBB - Michael Kurowski
1个回答

1
从您提供的示例数据来看,问题在于您总是将tempCatch分配给2D数组中的第一个项目(saveSections[0][0]),在第二次迭代中,split()函数失败,因为它是一个数组,而不是一个字符串。
这段代码应该迭代所有项目:
function parser(data){
    var saveSections = data.split("\r");
    var parsed = [];
    var tempCatch = "";
    var CatchTwo = [];
    for (var i = 0; i < saveSections.length; i++){
      saveSections[i] = saveSections[i].split(",");
      for (var j = 0; j < saveSections[i].length; j++){
          tempCatch = saveSections[i][j].split(":");
          saveSections[i][j] = tempCatch;
      }
    }
    return saveSections;
}

我会假设你需要返回saveSections而不是tempCatch,但从你的实现来看还有些不清楚。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接