我对此感到困惑:


  regResponse.splice(i + 1,0,newString);


导致无限循环或某种某种形式的(页面未加载)。如果我将其放在if块之外,它不是无限循环,但是我尝试执行的逻辑将无法工作。这是怎么回事?我看不到为什么它冻结了页面。

如果你把


  打破;


直接在regResponse.splice行之后,您会在控制台日志中看到我正在做的逻辑开始融合在一起,因为标题和链接本身现在针对前三个项目是分开的(直到到达if循环条件并打破它)。

var myString =“加速世界| http://www.anime-planet.com/anime/accel-worldAh!我的女神| http://www.anime-planet.com/anime/ah-my-goddessAh!我的女神TV | http://www.anime-planet.com/anime/ah-my-goddess-tvAi尤里青子| http://www.anime-planet.com/anime/ai-yori-aoshiAir齿轮| http://www.anime-planet.com/anime/air-gear

myString = myString.replace(/([a-z])([A-Z])/g, '$1 $2');

var reg = /[^|]+/g;
var regResponse = myString.match(reg);
console.log(regResponse);


for(i = 0; i < regResponse.length; i++) {
    if (regResponse[i].length > 20) {
       space = regResponse[i].indexOf(' ');
        var newString = regResponse[i].substring(space+1, regResponse[i].length);
        regResponse[i] = regResponse[i].slice(0, space);
        regResponse.splice(i+1, 0, newString);



    }

}

最佳答案

无限循环是在遍历数组时扩展数组(使用splice)的结果。尝试向后执行循环以避免这种情况:

for (i = regResponse.length-1; i>=0; i--) {


http://jsfiddle.net/mblase75/cgop02f1/

10-01 22:17