CoffeeScript 每次迭代都会向结果数组添加几个对象
Posted
技术标签:
【中文标题】CoffeeScript 每次迭代都会向结果数组添加几个对象【英文标题】:CoffeeScript add several objects to result array each interation 【发布时间】:2017-10-25 20:55:30 【问题描述】:需要这样做:
for word, index in text_array
React.DOM.span
key: index,
word
' '
但在这种情况下,CoffeeScript 只将最后一个对象“”推送到结果数组中,但我需要结果数组看起来像 [Object, '', Object,'']
【问题讨论】:
我认为你需要缩进你的最后一行 【参考方案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
, []
【讨论】:
以上是关于CoffeeScript 每次迭代都会向结果数组添加几个对象的主要内容,如果未能解决你的问题,请参考以下文章
使用 CUDA 在 python 中展开一个可并行化的 for 循环
连接主页,以便每次有人登陆页面时都会向我的 iPhone 发送推送通知消息