2016-04-26 18 views
1

リスト内包を使用してcoffeescriptの1行にこれを行う方法はありますか?条件付きIf-Elseリスト内包語の補完

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) 

をtranspileないだろう、私もこれを試してみましたが、それは明確にはJavaScript

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

答えて

1

List com prehensionは他にありませんが、あなたはその中に条件文を使用することができます。

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/

0

使用「のマッピング配列」右にコンパイルされませんでしたlike

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

len = 5  
msgsFormatted = [] 

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

console.log msgsFormatted 
+0

それとも、 '形式=(MSG)可能性 - > msg.length場合.... '次に' messages =(メッセージ中のmsgの書式(msg)) '。 –