es6 for-in循环返回第一个对象

时间:2016-08-27 17:07:18

标签: javascript reactjs ecmascript-6

ES6新手,所以我正在寻找forEach()的简短替换,我找到了this

阵营:

...

_productLoop(){
    for (var product of this.props.data) {
      const varient = product.variants.map(v => v);
      console.log(varient[0]);
      return(
        <tr>
          <td>{product.title}</td>
        </tr>
      )
    }
  }

 render(){
  return(
    <table>
      [...]
      <tbody>
        {this._productLoop()}
      </tbody>
    </table>
  )
 }

...

我有两个数组但是我的循环只显示了一个对象。这里有任何错误吗?

4 个答案:

答案 0 :(得分:2)

return语句打破了循环。除此之外,return语句不能连接从函数返回的内容。执行return后,您无法再次执行return

解决方案是创建一个字符串并将结果与​​自身连接起来,然后再返回。这是你所期望的。

编辑:我从未写过react.js,但我很快就会更新此答案。这不是你的情况......

var result = "";

for (var product of this.props.data) {
    result += "\
        <tr>\
            <td>" + product.title + "</td>\
        </tr>";
}

return result;

答案 1 :(得分:1)

我不确定你记录的varient(错字,顺便说一句)是什么,但从一开始,你可能想要更像这样的东西:

...
 render() {
  return (
    <table>
      [...]
      <tbody>
        {this.props.data.map(product =>
          <tr>
            <td>{product.title}</td>
          </tr>
        )}
      </tbody>
    </table>
  )
 }

...

答案 2 :(得分:1)

您可以使用以下代码this.props.data.map(showProduct)来循环播放每个道具数据并调用showProduct函数并显示标题

render() {
  const showProduct = (item) => {
  return (<tr>
        <td>{product.title}</td>
      </tr>);
  };
  return (
    <table>
      [...]
      <tbody>
        {this.props.data.map(showProduct)}
      </tbody>
    </table>
  )
 }

答案 3 :(得分:0)

我需要这个功能:

Double.MAX_VALUE