让函数 DashInsert(num) 在 num 中的每两个奇数之间插入破折号('-')。例如:如果 num 为 454793,则输出应为 4547-9-3。不要将零视为奇数。 这是我的代码(不起作用)。当我运行它时,我得到与无限循环相同的响应,我必须杀死该页面,但我不明白为什么。我知道有一些方法可以通过将其保留为字符串来做到这一点,但现在我想知道为什么我的方法不起作用。谢谢...
function DashInsert(num) {
num = num.split("");
for (i = 1; i < num.length; i++) {
if (num[i - 1] % 2 != 0 && num[i] % 2 != 0) {
num.splice(i, 0, "-");
}
}
num = num.join("");
return num;
}
最佳答案
使用num.splice
,您可以将新条目插入到数组中,从而增加其长度 - 这使得i
的值“落后于”增加的长度数组,因此永远不会满足中断条件。
除此之外,在插入 -
后的下一次迭代中,num[i-1]
将是该 -
字符,因此,您实际上是在尝试检查是否 '-' % 2 != 0
...这也没什么意义。
因此,当您将 -
插入数组时,您还必须将 i
加一 - 这将 a) 考虑到数组的长度加一,并且它还会在下一次迭代中检查-
之后的下一个数字:
function DashInsert(num) {
num = num.split("");
for (i = 1; i < num.length; i++) {
if (num[i - 1] % 2 != 0 && num[i] % 2 != 0) {
num.splice(i, 0, "-");
i++; // <- this is the IMPORTANT part!
}
}
num = num.join("");
return num;
}
alert(DashInsert("454793"));
关于javascript - 插入数字字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22107772/