首页 > 解决方案 > 在循环错误中替换字母

问题描述

我试图弄清楚为什么我的输出不正确它有点工作但在循环中仍然有一些错误我似乎无法找到原因。我知道有更好的方法可以做到这一点,但我想了解这个循环中出了什么问题。

所以首先它问一个句子第二个问题是替换 2 个字母 like : ae 第三个问题是用 like 替换它: ou

然后我拆分 karakters 并将句子放入一个数组中。循环检查数组中的每个字母,如果遇到其中一个字母,则应将其替换为找到的字母。

var input = prompt("geef een zin ?");
var zin = [];
zin = input.split("");
var inn = prompt("welke karakters wil je veranderen?");
var karaktersinn = inn.split("");
var outt = prompt("in welke letters wil je ze veranderen?");
var karatersout = outt.split("");
var output = "";
console.log(input);


for (var i = 0;i < input.length-1;i++){
   if (zin[i] == karaktersinn[0]){
      output += karatersout[0]

   }if (zin[i] == karaktersinn[2]){
      output += karatersout[2]
   }else{
      output += zin[i];
   }
}

console.log(output);
console.log(zin)
console.log(karaktersinn)
console.log((karatersout))

标签: javascriptarraysloopsfor-loopif-statement

解决方案


您的 if 条件的结构如下:

if 

if 

else

这意味着您有两个 if else 块。因此,无论第一个块中发生什么,总是会检查第二个块,并且最后一个条件将运行

你需要一个if-else。因此,一次只有三个条件之一运行。

var input = prompt("geef een zin ?");
var zin = [];
zin = input.split("");
var inn = prompt("welke karakters wil je veranderen?");
var karaktersinn = inn.split("");
var outt = prompt("in welke letters wil je ze veranderen?");
var karatersout = outt.split("");
var output = "";
console.log(input);


for (var i = 0;i < input.length;i++){
   if (zin[i] == karaktersinn[0]){
      output += karatersout[0]

   }else if (zin[i] == karaktersinn[2]){
      output += karatersout[2]
   }else{
      output += zin[i];
   }
}

console.log(output);
console.log(zin)
console.log(karaktersinn)
console.log((karatersout))

此外,您正在运行循环的少一次迭代。解决了这个问题。


推荐阅读