【问题标题】:Loop through Nested Array of Objects, Rendering Different Markup循环遍历对象的嵌套数组,呈现不同的标记
【发布时间】:2018-07-15 20:21:43
【问题描述】:

我用React 应用程序打了一个兔子洞。我是looping 通过这个对象数组:

const weeklyClasses = [
  {
    id: 1,
    day: "Monday",
    classDescription: [
      { classType: "11am-12pm Jazz", teacher: "Joe" },
      { classType: "1pm-2pm Blues", teacher: "Doe" },
      { classType: "3pm-4pm Samba", teacher: "Zen" }
    ]
  },
  {
    id: 1,
    day: "Tuesday",
    classDescription: [
      { classType: "11am-12pm Rock", teacher: "Sis" },
      { classType: "1pm-2pm Tango", teacher: "Ter" },
      { classType: "3pm-4pm Salsa", teacher: "Soul" }
    ]
  },
  // ...
];

我正在循环并检索所需的值,但是,目前 classType 输出为一个 p

const Data = () => {
  return weeklyClasses.map((o, i) => {
    return (
      <div className="classDay" key={o.id}>
        {o.day}
        <div className="classType">
          {o.classType}
          //Right here
          <p>{o.classDescription.map(i => i.classType)}</p>
        </div>
      </div>
    );
  });
};

如何将 each classType 输出为 diff p 标签?

可以在地图上绘制地图吗? (我应该,我怎么能)使用 reduce 代替?

【问题讨论】:

    标签: javascript reactjs ecmascript-6 reduce


    【解决方案1】:

    而不是将整个描述数组包装成单个p

    <p>{o.classDescription.map(i => i.classType)}</p>
    

    您可以将每个类描述元素包装到 p 中:

    {o.classDescription.map(i => <p>{i.classType}</p> )}
    {/*                          ^^^             ^^^^  */}
    

    【讨论】:

    • 非常感谢先生!可以在地图上映射吗?我应该减少它吗?
    • @NullisTrue 如果“在地图上映射”是指嵌套映射,那很好。这不是什么坏事,实际上很常见。从技术上讲,内部映射所做的只是映射嵌套元素的一小部分,而不是对整个映射元素进行映射,但无论哪种方式,这都很好。当您想将集合缩减为单个值时,会更多地使用缩减。这不是这里的情况,您希望将 javascript 对象集合映射到 JSX 元素集合,以显示这些对象的一些值。
    • 这是有道理的。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多