交换coffeescript中的数组元素

时间:2013-06-02 19:36:06

标签: arrays string coffeescript swap

我正在学习coffeescript并编写以下函数来反转给定的单词:

reverse = (word) ->
 if word.length is 0
     return "empty string"
 if word.length is 1
     return word
 left = 0
 right = word.length-1
 while left < right
     swap(word, left, right)
     #[word[left], word[right]] = [word[right], word[left]]
     left++
     right--
 return word

swap = (word, left, right) ->
 console.log "#{word[left]} #{word[right]}"
 temp = word[left]
 word[left] = word[right]
 word[right] = temp
 console.log "#{word[left]} #{word[right]}"

console.log reverse("coffeescript")

但它不起作用。在交换函数本身中,两个索引处的字符不会切换位置。我错过了什么?

2 个答案:

答案 0 :(得分:4)

问题可能是Javascript字符串是不可变的,因此不允许更改它们。

反转字符串的另一种方法是

 "coffeescript".split("").reverse().join ""

来自rosettacode.org

答案 1 :(得分:1)

另一个用于反转字符串的选项是CoffeeScript:

(c for c in 'coffeescript' by -1).join ''