【问题标题】:CoffeeScript add several objects to result array each interationCoffeeScript 每次迭代都会向结果数组添加几个对象
【发布时间】:2017-10-25 20:55:30
【问题描述】:

需要这样做:

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

但在这种情况下,CoffeeScript 只将最后一个对象“”推送到结果数组中,但我需要结果数组看起来像 [Object, '', Object,'']

【问题讨论】:

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

标签: arrays reactjs coffeescript


【解决方案1】:

您在这里尝试做的基本上是一张“平面地图”;概念上是这样的:

  • 给定一个结果数组
  • 遍历源数组
  • 每次迭代,将 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,尽管我认为咖啡脚本列表推导不支持这一点。

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

【讨论】:

    猜你喜欢
    • 2011-06-09
    • 2020-08-27
    • 2019-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    • 1970-01-01
    • 2016-04-06
    相关资源
    最近更新 更多