递归函数超出最大调用堆栈

时间:2017-02-08 20:11:23

标签: javascript recursion

我正在尝试创建一个反复迭代的函数,直到没有任何东西可以迭代。 该函数应该是:抓取每个容器的开头索引,抓取下一个逗号所在的索引(这将是一个整个容器----(例如:APZU09342342 Y257),将其添加到数组中,使新的字符串相同的旧字符串,但没有提取的部分,等一直到结束。数组应该将每个提取的部分作为索引/项目。但问题是我得到"最大调用堆栈超过"这是我的功能:

let string = `ACCU2083917   C324
ACSU2051784 J178
AMFU3002084 Z978
AMFU3153780 
AMFU8735314 Z952
AMFU8817182 C324
AMFU8817201 W185
AMFU8923287 Y258
ANYU2097165 
APHU6365825 Y257
APHU6392501 E364
APHU6416096 E364
APHU6492265 WAC8
APHU6496430 J745
`;

let reg_newline = /\n/gi;  //       ---- USE THIS
string = string.replace(reg_newline, ",\n");

let endIndex = string.indexOf(',');

let carryContainers = [];

let cutString;
Iterate();
function Iterate() {
    // take out the container + terminal part
    cutString = string.substring(0, endIndex);
    // push the container + terminal part in array
    carryContainers.push(cutString);

    // make string start after the comma for every iteration
    string = string.substring(endIndex + 1, string.length)
    // make end index of next container 
    endIndex = string.indexOf(',');
    //console.log(endIndex)
    if (endIndex) {
        Iterate();
    }

    if (!endIndex) {
        console.log(carryContainers);
    }
}

0 个答案:

没有答案