【发布时间】:2013-11-05 06:13:41
【问题描述】:
请记住,这还没有完成,我唯一的问题是为什么 console.log 会产生这个输出?
/>B /* 这正是我所期望的 */
/>B-D /* 我期望的第二个输出只是 ">/D" 我对它是如何提出的感到困惑 >/"B-D" */
graphArray = ["4","A","B","C","D","A-B","B-D","B-C","C-D"];
pointsArray = [];
linesArray = [];
nodes = graphArray[0];
for (i = 1; i < graphArray.length; i++) {
if (i <= nodes) {
pointsArray.push(graphArray[i]);
}
if (i > nodes) {
linesArray.push(graphArray[i]);
}
}
nextpoint = pointsArray[0];
patt = new RegExp(/-.*/);
patt2 = new RegExp(nextpoint + "-");
for (i = 0; i < linesArray.length; i++) {
x = 0;
while (x < linesArray.length) {
if (linesArray[x].replace(patt,"") === nextpoint) {
nextpoint = linesArray[x].replace(patt2,"");
console.log(nextpoint);
}
x++;
}
}
编辑:撞到额头对我来说一定为时已晚,我不敢相信我错过了。谢谢你指出这一点。解决了。
【问题讨论】:
-
patt2是/A-/,因此它不会匹配“B-D”,因此不会替换前导“B-”。每次找到下一个点时,都必须构造一个新的正则表达式。我认为使用substring或连字符上的split会获得更好的性能。 -
使用
split方法不是更方便吗?
标签: javascript for-loop while-loop output