Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.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/3/arrays/14.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_Arrays_For Loop_Reverse - Fatal编程技术网

Javascript 反转整个字符串,同时保持空格在同一位置

Javascript 反转整个字符串,同时保持空格在同一位置,javascript,arrays,for-loop,reverse,Javascript,Arrays,For Loop,Reverse,这是我尝试过的代码。如果我们输入“我们是农民!”它应该返回“!s rem raferaw”,但是我的代码返回“!s remr aferaeW” 功能反转(输入){ var array1=[]; var array2=[]; var nWord; 对于(变量i=0;i

这是我尝试过的代码。如果我们输入“我们是农民!”它应该返回“!s rem raferaw”,但是我的代码返回“!s remr aferaeW”

功能反转(输入){
var array1=[];
var array2=[];
var nWord;
对于(变量i=0;i=0;i--){
阵列2.拼接(空格2[i],1);
}
控制台日志(array2);
nWord=array2.join(“”);
控制台日志(nWord);
var array3=[];
对于(变量i=0;i=0;i=i-1){
阵列3.拼接(空格[i],0,”);
}
控制台日志(array3);
var anWord=array3.join(“”);
返回一个单词;
}
var input=“我们是农民!”;
反转(输入);
首先,我将输入的每个字母推入“array1”的数组中。然后我为“array1”的空间的索引创建了一个数组,称为“spaces”

那么“array2”是一个反向排列的“array1”数组

然后“spaces2”是“array2”的索引数组,然后我使用for循环来拼接array2中的空格。然后把“nWord”和“array2”组合成一个新词

然后“array3”是一个包含所有nWord字母的数组,我使用了一个反向for循环,尝试将空格输入到“array3”中,并使用“spaces”数组的索引。不幸的是,它没有返回“!s rem raferaw”,而是返回“!s remr aferaeW”


我想知道如何使用“spaces”数组的索引在“array3”中的索引2和7处创建空间

您只需要做以下更改

 //for (var i = spaces.length - 1; i >=0; i = i - 1) {
  //    array3.splice(spaces[i], 0, " ");
  //}

  for (var i = 0; i < spaces.length; i = i + 1) {
      array3.splice(spaces[i], 0, " ");
  }
//for(var i=spaces.length-1;i>=0;i=i-1){
//阵列3.拼接(空格[i],0,”);
//}
对于(变量i=0;i
您正在反向读取空格数组,但正如问题所述,空格应该位于同一位置。从头到尾的阅读解决了这个问题

功能反转(输入){
var array1=[];
var array2=[];
var nWord;
对于(变量i=0;i=0;i--){
阵列2.拼接(空格2[i],1);
}
控制台日志(array2);
nWord=array2.join(“”);
控制台日志(nWord);
var array3=[];
对于(变量i=0;i=0;i=i-1){
//阵列3.拼接(空格[i],0,”);
//}
对于(变量i=0;i反转(输入)也可以将代码最小化很多。要将字符串转换为字符数组,可以使用
string.split(“”)
。您可以通过
array2.join(“”).split(“”).join(“”)删除空格,而无需使用spaces2数组。最后,如果你能接受这个答案,那就太好了:)
 //for (var i = spaces.length - 1; i >=0; i = i - 1) {
  //    array3.splice(spaces[i], 0, " ");
  //}

  for (var i = 0; i < spaces.length; i = i + 1) {
      array3.splice(spaces[i], 0, " ");
  }