Javascript 在不使用.Reverse()的情况下反转字符串中的单词(不是字母)

Javascript 在不使用.Reverse()的情况下反转字符串中的单词(不是字母),javascript,arrays,string,Javascript,Arrays,String,我正在处理的问题要求我编写一个函数reverseMessage,它接受一个字符串消息并颠倒单词的顺序 我第一次提出的答案很有效,但显然不符合此任务的要求: function reverseMessage(string) { return string.split(" ").reverse().join(" "); } 例如: var string = "reversed are string your in words the now" var results = "now the w

我正在处理的问题要求我编写一个函数reverseMessage,它接受一个字符串消息并颠倒单词的顺序

我第一次提出的答案很有效,但显然不符合此任务的要求:

function reverseMessage(string) {
    return string.split(" ").reverse().join(" ");
}
例如:

var string = "reversed are string your in words the now"
var results = "now the words in your string are reversed"
新解决方案:

我想把这个字符串分割成一个数组,然后在数组中循环,将第一个索引与最后一个索引交换,第二个索引与第二个索引交换,第三个索引与第三个索引与最后一个索引交换,等等。。。直到我在中间相遇。

我正在努力使以下两种不同的功能发挥作用:

 function reverseMessage(string) {
     var array = string.split(" ");
     //loop through array and replace first index with last index, second   
     index with second to last index, third index with third to last index, etc
     for (var i = 0; i < array.length/2; i++) {
         for (var j = (array.length-1); j > array.length/2; j--) {
             array[i] = array[j];
             array[j] = array[i];
             messageSplit.join(",");
     }
 };



 function reverseMessage2(string) {
     var array = string.split(" ");
     var newArray = []
     for (var i = 0; i < array.length/2; i++) {
         newArray.unshift(array[i]++);
         newArray.join(",");
         return newArray;
     }
 };
我走对了吗?

试试这个

   function reverseMessage(string) {
     var array = string.split(" ");
     var result="";
     for (var i = array.length-1; i >=0; i--) {
         result+=array[i]+" ";
     }
    console.log(result);
 };
function reverseMessage( str ) {

    var arrStr = [];
    var temp ="";
    for(var i = 0 ; i < str.length ; i++)
    {
        if(str[i] === " ")
        {
            arrStr.push(temp);
            temp="";
        }
        else
        {
            temp += str[i]; 
        }
    }
    if(temp.length >= 0)
    {
        arrStr.push(temp);
    }
    var result = "";
    for(var x=arrStr.length-1 ; x >=0 ; x--)
    {
        result += " "+arrStr[x];
    }
    return result;
}


console.log(reverseMessage("I am here"));

所以,在您的reverseMessage函数中,您试图将变量替换为您正在执行的操作

数组[i]=数组[j]; 数组[j]=数组[i]

也就是说,数组[i]=array[j],所以让我们假设array[i]=This和array[j]=That,根据你的代码,array[i]将是那个,array[j]也将是那个,所以你可以尝试这样的方法:

 function reverseMessage(string) {
     var array = string.split(" ");
     //loop through array and replace first index with last index, second
     //index with second to last index, third index with third to last index, etc
     for (var i = 0,j=(array.length)-1; i < array.length/2; i++) {
             temp=array[i]
             array[i] = array[j];
             array[j]=array[i]
             array[j] = temp; j--;}
       console.log(array.join(" "));
 };  reverseMessage("find you will pain only go you recordings security the into if");

您要做的是将单词message拆分为单独的字符串,将它们反转,然后将它们添加到一起,这将在适当的位置反转它们。试一试

function reverseMessage(message){
  var reversedMessage = ''; //A string to hold the reversed message
  var words = message.split(' ');
  for(var i =0; i< words.length; i++){
     reversedMessage +=  reverse(words[i]) + " ";// add the reversed word to the reversed message, with a space at the end so the words dont touch
  }
  return reversedMessage
}
//A helper function that reverses a string
function reverse(s) {
  var o = '';
  for (var i = s.length - 1; i >= 0; i--)
    o += s[i];
  return o;
}

资料来源:

嗯,总得有人来做:

功能转速{ var a=s.split/, l=a.长度; i=l/2 | 0; 而i-a.patchii,1,a.patchil-1-i,1,a[i][0]; 返回a.join“”; } 文件.文字'01 2 3 4 5 6 7 8 9' 使用Array.split、Array.pop、Array.push和String.substr:

var flip=functionstr{ var res=,sp=,arr=str.splitsp; 而arr.length res+=arr.pop+sp; 返回res.substr0,res.length-1;//删除最后一个空格 };
现在,你的字串是什么;数组[i]=数组[j];数组[j]=数组[i];不起作用,因为您刚刚用数组[j]替换了数组[i]!是的,我想-只是不知道如何正确地写它-我想我会写下一些我希望发生的事情的想法,希望其他人能看到我试图完成的事情。哇,这比我试图做的要简单得多lol-谢谢Psylogic这在反转字符串中的所有内容时很有帮助。我只是想把这些话颠倒过来。不过,谢谢你的回答。这些词会颠倒过来,是的,但这些词的字母不会。因此,如果我的字符串before='find you will pain only go you recordings security in the if',那么before将是='if in the security recordings you go only pain only pain will you find find'---你的解决方案是这样的=dnif uoy lliw niap ylno og uoy sgnidrocer ytruces eht otni fi我试图放入一个更大的字符串,但效果不太好对于较短的字符串。示例----var message='find you will pain only go you recordings security into if'----results='recordings security into if find you will pain only go'----when它应该是='if in the security recordings you go only pain you find'.@xgrioux立即检查此项将帮助您解决方案不断使我的服务器崩溃字体哎呀,我错了。现在测试:请考虑编辑您的帖子,以添加更多的解释您的代码做什么,为什么它会解决这个问题。即使答案是有效的,但它大多只包含代码,这通常不会帮助OP理解他们的问题。
with `pop()` ;)

function reverseMessage(string) {
         var array = string.split(" ");
         var result="";
         while (array.length > 0) {
             result += array.pop()+" ";
         }
        console.log(result);
     };