我对此感到困惑:
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/