的CoffeeScript添加多个对象以产生阵列中的每个迭代

问题描述 投票:0回答:1

需要做的到水木清华这样的:

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

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

arrays reactjs coffeescript
1个回答
0
投票

什么你想在这里做的基本上是“平面地图”;概念是这样的:

  • 给定阵列的结果
  • 遍历源阵列
  • 每次迭代中,推N个值到结果阵列

你可以做一步一步的是这样的:

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

你也可以使用Array#flatten从下划线,它结合了嵌套数组的true说法的意思是“扁平化只是一个水平”,这是没有必要在这里,但它更具体传达的意图。

_ = 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
, []
© www.soinside.com 2019 - 2024. All rights reserved.