javascript - 插入数字字符串

标签 javascript arrays string insert

让函数 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"));

http://jsfiddle.net/37wA9/

关于javascript - 插入数字字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22107772/

相关文章:

javascript - 在 AngularJS 中以 CSV、Excel、PDF 格式导出数据

javascript - 如何为每个数据更新多个元素

c# - 在每行开头之前添加空格(字符串的第一行除外)?

java - Java中字符串到整数的解决方案

ruby-on-rails - 首先对数组的特定项目进行排序

c - 如何摆脱警告: deprecated conversion from string constant to char*

javascript - Show() 当类 "tip"被发现不工作时

javascript - 如何在父级的内部 div 上使用 "this"

c - 尝试在 C 中 printf 一个字符串

c++ - 分配动态数组 C++ 期间的段错误