javascript循环迭代太多

标签 javascript node.js replace node-debugger

尝试一个有趣的问题,将字符串中的元音替换为行中的下一个元音,即 a->e、e->i、i->o、o->u,而不考虑“u”。从数组而不是字符串开始。我的第二个循环(迭代元音数组元素)忽略我的“j

var vowelChange = function(vowelArray, stringToChange) {
for (var i = 0; i<stringToChange.length; i++) {
    for (var j = 0; j<vowelArray.length; j++) {
      if (stringToChange[i]===vowelArray[j]) {
        var newCharacter = vowelArray[j+1]
          stringToChange[i] = newCharacter
          i++
      }
    }
}
return stringToChange
};

我正在使用 node-debug 在浏览器中设置断点,j 在从 0 开始之前循环到 5。我得到了正确的输出,但 j 应该在 4 处停止...

编辑

有人可以解释一下我如何错误地使用 join,因为我无法让我的函数输出字符串而不仅仅是数组。

var vowelChange = function(vowelArray, stringToChange) {
for (var i = 0; i<stringToChange.length; i++) {
    for (var j = 0; j<vowelArray.length-1; j++) {
      if (stringToChange[i]===vowelArray[j]) {
          stringToChange[i] = vowelArray[j+1]
          break
      }
    }
  }
  stringToChange = stringToChange.join('')
  return stringToChange
};


var vowels = ['a','e','i','o','u']
var firstName = ['t', 'e', 's', 't']

vowelChange(vowels, firstName)
console.log(firstName)

最佳答案

假设 VowelArray 的索引为 0...

var vowelChange = function(vowelArray, stringToChange) {
    for (var i = 0; i<stringToChange.length; i++) {
        for (var j = 0; j<vowelArray.length - 1; j++) {
            if (stringToChange[i]===vowelArray[j]) {
                stringToChange[i] = vowelArray[j+1];
                break;
            }
        }
    }
    return stringToChange
};

关于javascript循环迭代太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36871770/

相关文章:

perl - 查找列中的唯一值并将唯一值替换为数字

javascript - 如何在页面刷新后保持 ExtJs App 存活

Javascript,如何保存由javascript更改的图像

javascript - 使用 jquery 切换一个随机类

javascript - 使用同步方法测量开销的最佳方法

javascript - 我想改进 Javascript/jQuery 中的搜索替换功能

JavaScript 菜单 onmouseout 问题

node.js - 如何格式化以年和月为单位的持续时间?

javascript - 使用 cheerio 执行抓取的 JavaScript

使用 tidyverse 根据不同的列或行位置用 NA 替换列值