【问题标题】:Convert a Iterable into a list in javascript/typescript将 Iterable 转换为 javascript/typescript 中的列表
【发布时间】:2017-01-16 17:54:42
【问题描述】:

我有一个映射(字符串 -> 字符串),我想将其转换为列表,以便能够在其上调用“映射”以将其转换为其他值的列表。背景是,我想在这样的 reactjs 组件中使用它:

<input type="select">
{props.options.entries().toList().map((type,i) => {
                return <option value={type[0]} key={i}>{type[1]}</option>
})
}
</input>

现在,entry() 给了我一个可迭代的。但它没有“toList”。如何进行这种转换?

【问题讨论】:

  • 你试过只做entries().map(...)吗?您还缺少一个结束大括号,仅供参考
  • 我看不懂这段代码。大括号和圆括号不匹配。
  • 对不起,我修好了
  • @mhodges entries().map(...) 给我属性 'map' 在类型 'IterableIterator' 上不存在
  • @Nathan 那个可迭代对象是从哪里来的?打字稿?

标签: javascript list reactjs


【解决方案1】:

在 react 组件的 render 函数中,

render: function() {
  return (
  <Root>
  ...
  {props.options.entries().toList().map((type,i) => {
    return <option value={type[0]} key={i}>{type[1]}</option>
  })
  ...
  </Root> )
}

与以下没有什么不同:

render: function() {
  let optionList = props.options.entries().toList().map((type,i) => {
    return <option value={type[0]} key={i}>{type[1]}</option>
  }

  return (
  <Root>
  ...
  {optionList}
  ...
  </Root> )
}

并没有什么不同:

render: function() {
  let optionList = []
  // iterate through this iterable(pseudo, as the iterable interface is needed)
  let entries = props.options.entries()
  while (entries.hasNext()) {
    optionList.push(entries.next())
  }
  optionList.map((type,i) => {
    return <option value={type[0]} key={i}>{type[1]}</option>
  }

  return (
  <Root>
  ...
  {optionList}
  ...
  </Root> )
}

【讨论】:

    猜你喜欢
    • 2016-11-18
    • 2010-11-07
    • 2023-02-05
    • 1970-01-01
    • 2014-09-19
    • 2019-09-17
    • 2021-05-04
    • 2013-04-18
    • 1970-01-01
    相关资源
    最近更新 更多