javascript - 使用具有多个属性的对象迭代对象数组

标签 javascript reactjs

我正在尝试迭代以下内容:

state = {
 products : [
  {
   x : "sd",
   y : "fdg"
  },  {
   x : "sdx",
   y : "fdgx"
  }
 ]
}

我需要遍历上面的产品数组和内部对象来创建:

<tr><td>sd</td><td>fdg</td></tr>

我尝试使用:

{
    this.state.products.map(function(prod) { 

        return <tr><td>{prod.x}</td><td>{prod.y}</td></tr>;
    })
}

但是出现多个错误并且 prod 未定义。

最佳答案

您组件中其他地方的逻辑可能正在改变状态,这反过来可能是渲染期间抛出错误的根本原因。

请务必检查 products 数组是否在您的组件 state 中一致定义,并且该数组中的项目是否已定义。

这里的一个解决方案可能是采用更具防御性的方法来呈现表格行元素,方法是执行以下操作:

{
    Array.isArray(this.state.products) && this.state.products
    .filter(product => !!product)
    .map(product => { 

        return <tr><td>{product.x}</td><td>{product.y}</td></tr>;
    })
}

在这里,呈现逻辑通过 Array.isArray() 断言 this.state.products 是预期的数组类型。此外,该逻辑确保通过以下行首先过滤掉任何未定义的 prop 项目来定义任何正在呈现的 Prop :

filter(product => !!product)

希望对您有所帮助!

关于javascript - 使用具有多个属性的对象迭代对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53404238/

相关文章:

javascript - npm run prettier --检查与 azure pipeline 任务中的不同

html - 在Audio元素中更新 `src`之后,事件监听器将如何处理? ( react )

reactjs - 如何在功能组件中访问 props.match.params

reactjs - 在 React 中使用 useState 和 useEffect 进行无限循环

javascript - 如何修复 jquery 库中的 'jQuery is not defined' 错误?

javascript - 无法突出显示最多 6 个 Gmail 内容

javascript - 如果使用 Ramda reduce 但使用 native 则 Jest 测试失败

javascript - 当我试图隐藏 div 时,Jquery .next() 不起作用

javascript - 传递函数名作为参数执行

javascript - 如何使用 React es6 处理多个受控输入?