2016-01-21 44 views
0

找到並找不到此答案。在不改變字詞順序的情況下反轉字符串中的每個單詞

我試圖扭轉一個字符串的每一個字不改變的話...的順序

這是我的代碼有:

function wordsReverser(string){ 
    return string.split('').reverse().join(''); 
    } 
    console.log(wordsReverser('New string, same results.')); 

什麼,我得到的結果是這樣的: 「.stluser EMAS,gnirts文」

我要尋找這樣的: 「文gnirts ......」

這裏是一個jsbin

+0

你似乎會問兩個不同的問題。 jsbin並不反映你在這裏發佈的代碼,代碼也不會產生你得到的輸出。標題似乎表明你想改變一個字符串的值。這是不可能的,因爲字符串是不可變的。這篇文章的其餘部分似乎要求翻轉單個單詞而不是整個字符串。 –

+0

我改變了我在問題中的代碼,但問題和bin已經足夠清晰了,我想...我想在它的位置反轉字符串,所以我的字符串New的第一個單詞應該位於第一個位置在我的結果...截至目前,我得到的字符串顛倒,但第一個詞是結果,而不是新的。 – Lucky500

+0

「就地」在討論價值時具有不同的含義。例如。 'Array#sort'對數組進行「排序」排序:它改變數組而不是創建一個新數組。 –

回答

3

嘗試這樣的事情。

function wordsReverser(string){ 
return string.split("").reverse().join("").split(" ").reverse().join(" ") 
} 

console.log(wordsReverser('New string, same results.')); 
+0

這個技巧@btav ......謝謝! – Lucky500

+1

您有沒有從http://stackoverflow.com/q/29764143/218196獲得該解決方案?如果是,請不要複製答案。 –

+0

我剛看到它,所以是的,謝謝你的鏈接。 – Lucky500

0

更新:編輯答案,以反映更新問題

function wordsReverser(string){ 
 
    return string.split(' ').map(function(word) { 
 
     return word.split('').reverse().join(''); 
 
    }).join(' '); 
 
} 
 
alert(wordsReverser('New string, same results.')); 
 
// weN ,gnirts emas .stluser

如果你想保留標點符號到位:

function wordsReverser(string){ 
 
    return string.split(' ').map(function(word) { 
 
     var rev = word.split('').reverse().join(''); 
 
     if (['.',','].indexOf(rev[0]) > -1) { 
 
      rev = rev.slice(1) + rev[0]; 
 
     } 
 
     return rev; 
 
    }).join(' '); 
 
} 
 
alert(wordsReverser('New string, same results.')); 
 
// weN gnirts, emas stluser.

+0

這不是他使用的那個不起作用的確切代碼嗎? –

+0

我不得不做一些雙重大聲笑,這是張貼的確切代碼。 – Robert

+0

夥計們,這個問題被編輯了,在原始版本中,它就像'string.split('')。reverse()。join('');返回字符串' –

2

下面是與解決方案的jsfiddle您正在尋找https://jsfiddle.net/e109c4pc/

function wordsReverser(string){ 
    var arr = string.split(""); 
    var output = []; 
    for(var i = arr.length - 1; i >= 0; i--){ 
     output.push(arr[i]); 
    } 
    return output.join(""); 
} 
+0

感謝羅伯特,那也是訣竅。 – Lucky500

+0

酷 - 很高興提供幫助。 – Robert

0

您需要將文本拆分爲單獨的單詞,然後逐個反轉每個單詞。

function wordsReverser(string){ 
 
    var words = string.split(' '); 
 
    var result = []; 
 
    for(var i = 0; i < words.length; i ++){ 
 
    result.push(words[i].split('').reverse().join('')); 
 
    } 
 
    return result.join(' '); 
 
} 
 

 
console.log(wordsReverser('New string, same results.'));

相關問題