Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 切换同一单词中的元音_Javascript_Algorithm - Fatal编程技术网

Javascript 切换同一单词中的元音

Javascript 切换同一单词中的元音,javascript,algorithm,Javascript,Algorithm,如何将字符串中的元音切换到第一个元音与最后一个元音切换,第二个元音与第二个元音切换,以此类推?我尝试分割输入字符串并尝试嵌入for循环,但我似乎不知道该从那里开始 function reverseVowels(input) { let vowels = ['a','e','i','o','u'] let newArr = input.split('') let result = []; for (i = 0; i < newArr.length; i++){ for

如何将字符串中的元音切换到第一个元音与最后一个元音切换,第二个元音与第二个元音切换,以此类推?我尝试分割输入字符串并尝试嵌入for循环,但我似乎不知道该从那里开始

function reverseVowels(input) {
  let vowels = ['a','e','i','o','u']
  let newArr = input.split('')
  let result = [];
  for (i = 0; i < newArr.length; i++){
    for (j = 0; j < newArr.length; j++)
      if (newArr[i] === vowels[i] && newArr[j] === vowels[i]) {
        newArr[i] = newArr[j]
      }
  }
  return result;
}
功能反转窗口(输入){
让元音=['a','e','i','o','u']
设newArr=input.split(“”)
让结果=[];
对于(i=0;i

提前谢谢你

我会让一名跑步者从两端开始。所以
left
将从索引
0
开始,然后增加,直到它碰到一个元音(或字符串的末尾,但我会让您处理边缘大小写)。一旦发生这种情况,使用一个跑者
从结尾开始,然后逐渐减少,直到碰到一个元音为止。交换它们并重复,直到指针交叉。

我会从每一端开始跑步。所以
left
将从索引
0
开始,然后增加,直到它碰到一个元音(或字符串的末尾,但我会让您处理边缘大小写)。一旦发生这种情况,使用一个跑者
从结尾开始,然后逐渐减少,直到碰到一个元音为止。交换它们并重复,直到指针交叉。

我能想到的最简单的解决方案是做一种就地反转,跳过任何不是元音的字符:

功能反转窗口(输入){
常量元音=新集合(['a'、'e'、'i'、'o'、'u']);
const result=input.split(“”)
常量元音deces=结果.减少((acc,char,i)=>{
if(元音has(char)){
acc.push(i);
}
返回acc;
}, []);
设i=0;
设j=元音长度-1;
而(j>i){
const ref=结果[元音符号[i];
结果[元音词[i]]=结果[元音词[j]];
结果[j]]=ref;
j--;
i++;
}
返回结果;
}

我能想到的最简单的解决方案是做一种就地反转,跳过任何非元音的字符:

功能反转窗口(输入){
常量元音=新集合(['a'、'e'、'i'、'o'、'u']);
const result=input.split(“”)
常量元音deces=结果.减少((acc,char,i)=>{
if(元音has(char)){
acc.push(i);
}
返回acc;
}, []);
设i=0;
设j=元音长度-1;
而(j>i){
const ref=结果[元音符号[i];
结果[元音词[i]]=结果[元音词[j]];
结果[j]]=ref;
j--;
i++;
}
返回结果;
}

获取输入的所有元音,然后将其反转。最后,将原数组元音替换为过滤后的元音

功能反转窗口(输入){
常量元音=['a','e','i','o','u'];
常数a=输入
.拆分(“”)
.filter((x)=>元音。包括(x))
.reverse();
让计数=0;
返回[…输入].map((x)=>(元音。包括(x)?a[count++]:x)).join(“”);
}
console.log(reversevowles('ahije'));

console.log(reversevowles('axeyuzi'))获取输入的所有元音,然后将其反转。最后,将原数组元音替换为过滤后的元音

功能反转窗口(输入){
常量元音=['a','e','i','o','u'];
常数a=输入
.拆分(“”)
.filter((x)=>元音。包括(x))
.reverse();
让计数=0;
返回[…输入].map((x)=>(元音。包括(x)?a[count++]:x)).join(“”);
}
console.log(reversevowles('ahije'));

console.log(reversevowles('axeyuzi'))你的循环没有意义,你两次都是从前面循环。您还只是检查元音是否与字符串数组中的元音相同。你可以展示一些输入和输出的例子吗?你的循环毫无意义,你两次都是从前面循环。您还只是检查元音是否与字符串数组中的元音相同。您应该从字符串的两侧使用和循环。您可以展示几个输入和输出示例吗?