2015-08-28 34 views
-1

我的工作問題詢問我寫一個函數reverseMessage()接受一個字符串消息,並反轉到位單詞的順序。反話(而不是字母)的字符串,而無需使用.reverse()

我第一次來到了作品,但顯然不符合這一任務的requirements答案:

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" 

新的解決方案:

我會想通過該數組此字符串分割成一個數組,然後循環,並與最後一個索引,與第二到最後一個索引,與3第三索引的第二索引交換第一索引rd到最後的索引等...直到我在中間相遇。

我試圖讓下面的工作兩種不同的功能:在正確的軌道上

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; 
    } 
}; 

我是誰?

+0

'陣列[I] =陣列[J]; array [j] = array [i];'不會「工作」,因爲您剛剛用'array [j]'替換了'array [i]'! – RobG

+0

是的,我想 - 只是不知道如何正確書寫 - 認爲我會寫下我想要發生的事情的一些想法,希望別人能夠看到我想要完成的事情。 – Crystal

回答

2

所以在你reverseMessage功能正在嘗試換爲變量,你正在做

陣列[i] =陣列[J]。 array [j] = array [i];

這是給陣列[我] =陣列[J]所以讓說數組[I] =「這」和陣列[J] =「那」根據你的代碼陣列[我]將是「那」與陣列[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"); 
+0

我試圖把一個更大的字符串,它不像它爲較短的字符串。例如-------- var message ='找到你會痛苦的只去你錄製的安全性如果'----------- results ='錄製安全性如果找到你會感到痛苦只有去'-------------當它應該='如果進入安全錄音你只去痛苦你會發現' – Crystal

+0

@xgrioux現在檢查這一個將幫助你 –

+0

太棒了!只需要一個for循環:)謝謝! – Crystal

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

哇這是很簡單然後我正在試圖做lol-感謝psylogic – Crystal

+0

歡迎您! –

1

試試這個

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")); 
+0

This works too!謝謝穆罕默德! – Crystal

0

你想要做的是分裂的話消息到各個琴絃顛倒它們,然後把它們相加,這將扭轉什麼他們到位。嘗試

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; 
} 

來源:http://eddmann.com/posts/ten-ways-to-reverse-a-string-in-javascript/

+0

這在翻轉字符串中的所有內容時很有用。我只是想扭轉這些話。儘管謝謝你的回答。 – Crystal

+0

反轉的話到位正確嗎? – KidVeno

+0

這個詞會扭轉是的,但這些詞的字母不會。因此,如果我的字符串之前='發現你會痛苦只是去錄音如果安全',那麼後會是='如果進入安全錄音你只有痛苦你會發現'-----你的解決方案的後看起來像這個=「dnif uoy lliw niap ylno og uoy sgnidrocer ytiruces eht otni fi」 – Crystal

1

好,別人的你必須這樣做:

function rev(s){ 
 
    var a = s.split(/ /), 
 
     l = a.length; 
 
     i = l/2 | 0; 
 
    while (i--) a.splice(i, 1, a.splice(l-1-i, 1, a[i])[0]); 
 
    return a.join(' '); 
 
} 
 

 
    document.write(rev('0 1 2 3 4 5 6 7 8 9'));

1

使用Array.split()Array.pop()Array.push()String.substr()

var flip = function(str) { 
 
    var res = "", sp = " ", arr = str.split(sp); 
 
    while (arr.length) 
 
    res += arr.pop() + sp; 
 
    return res.substr(0, res.length - 1); //remove last space 
 
}; 
 
alert(flip("reversed are string your in words the now"));

使用String.lastIndexOf()String.substr()

var flip = function(str) { 
 
    var res = "", i, sp = ' '; 
 
    while (str) { 
 
    i = str.lastIndexOf(sp); 
 
    res += str.substr(i + 1) + sp; 
 
    str = str.substr(0, i); 
 
    } 
 
    return res.substr(0, res.length - 1); //remove last space 
 
}; 
 

 
alert(flip("reversed are string your in words the now"));

0
with `pop()` ;) 

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

你的解決方案不斷崩潰我的服務器:( – Crystal

+0

oopsie,我的錯誤。現在測試:) – 2015-08-28 06:58:29

+1

請考慮編輯你的文章以添加更多解釋瞭解您的代碼的功能以及爲什麼它可以解決問題。一個主要包含代碼的答案(即使它正在工作)通常不會幫助OP瞭解他們的問題。 – SuperBiasedMan

相關問題