Coffeescript中的条件If-Else List理解

时间:2016-04-26 18:57:12

标签: coffeescript

有没有办法在一行coffeescript中使用列表理解来做到这一点?

  len = 70
  msgsFormatted = []
  for msg in messages
      if msg.length == len
      then msgsFormatted.push(msg + ' ...')
      else msgsFormatted.push msg

我正在尝试这个,但它不会传播

msgsFormatted = (msg + ' ...' if msg.length == len else msg for msg in messages)

我也试过了,但显然没有编译到正确的javascript

msgsFormatted = (if msg.length == len then msg + ' ...' else msg for msg in messages)

2 个答案:

答案 0 :(得分:1)

列表理解并不提供其他内容,但您可以在其中使用条件语句:

len = 2
messages = [1, 2, 3, 4, '22', 5]
alert ((if msg.length == len then msg + ' ...' else msg) for msg in messages)

尝试自己:https://jsfiddle.net/

答案 1 :(得分:0)

使用“映射阵列”,如

messages = [ "Peter", "Paul", "Mary" ]

len = 5     
msgsFormatted = []

msgsFormatted = messages.map (msg) -> (if msg.length == len then msg + ' ...' else msg)

console.log msgsFormatted