2017-05-25 26 views
0

需要做的到水木清华这样的:CofeeScript增加几个对象,结果数组每个互为作用

for word, index in text_array 
    React.DOM.span 
     key: index, 
     word 
    ' ' 

但在这种情况下的CoffeeScript推只有最后一个对象“”到结果数组,但我需要导致阵列看起来像[对象,'',对象,'']

+0

我认为你需要缩进你的最后一行 – robkuz

回答

0

你在这里要做的事情基本上是一个“平面图”。概念上是这样的:

  • 给出一个结果阵列
  • 迭代过源阵列
  • 每次迭代中,推N个值到结果阵列

可以做一步一步的状这个:

results = [] 
source.forEach (word, idx) -> 
    results.push React.DOM({key: index}, word), '' 

你也可以使用下划线Array#flatten,它结合了嵌套数组参数意思是“扁平化一个层次”,这里没有必要,但它确实传达了更具体的意图。

_ = require 'underscore' 
results = _.flatten (source.map (word, idx) -> 
    [React.DOM.span({key: index}, word), '' ] 
), true 

任一个可以改写使用列表理解,虽然只是第二次利用返回值:

results =[] 
for word, index in source 
    results.push React.DOM.span({key: index}, word), '' 

results = _.flatten (for word, index in source 
    [React.DOM.span({key: index}, word), '' ] 
), true 

你也可以使用Array#reduce,虽然我不认为CoffeeScript的列表解析支持这一点。

results = source.reduce (memo, word, index) -> 
    memo.push React.DOM({key: index, word), '' 
    memo 
, [] 
相关问题