gpt4 book ai didi

javascript - 如何映射包含另一个我想要映射的对象并从中返回 JSX 的对象?

转载 作者:行者123 更新时间:2023-12-03 00:44:07 26 4
gpt4 key购买 nike

我的问题

我有看起来像这样的模拟数据对象:

topicGroups: {
0: {
title: "Languages",
topics: {
0: {
title: "Javascript",
description: "Everything about Vanilla JS",
latestTopic:
"Diskussion] Der ideale asdf Gaming-PC er ideale asdf Gamin(1..."
},
1: {
title: "C#",
description: "Microsoft's go to language",
latestTopic: "Main geiles Topic alter"
}
}
},
1: {
title: "Coding Partner Search",
topics: {
0: {
title: "Suche nach Liebe",
description: "Everything about Vanilla JS",
latestTopic:
"Diskussion] Der ideale asdf Gaming-PC er ideale asdf Gamin(1..."
}
}
}
}

我想实现以下目标:

  • 映射所有主题组(以访问 title 字符串和 topics 对象。
  • 映射第一个 map 内的 topics 对象(因此我位于群组标题的范围内)
  • 返回 Jsx,其中我仅使用群组的标题和当前主题 titledescription

我尝试了几个 lodash 函数,但无法使其工作。我得到的最接近的是除了 topicGroups 之外创建另一个新对象,但是很难弄清楚哪些主题引用了哪些 topicGroups。

示例我想如何使用 jsx 以及我想返回什么:

return groups.map(group =>
group.topics.map(topic => {
return (
<ForumTopicGroup title={group.title}>
<ForumTopic>{topic.title}</ForumTopic>
</ForumTopicGroup>
);
})
);

实现这一目标的最佳且最干净的方法是什么?

我之所以只使用对象而不是使用数组来处理数据,是因为我想像使用来自 firebase 的数据一样处理这些数据(因为我稍后将在应用程序中使用 firebase

最佳答案

如果您可以使用数组,它会像您在问题中编写的那样工作,但由于对象没有 map 方法,因此您可以使用 Object.entries而不是迭代对象中的所有键值对。

示例

const groups = {
0: {
title: "Languages",
topics: {
0: {
title: "Javascript",
description: "Everything about Vanilla JS",
latestTopic:
"Diskussion] Der ideale asdf Gaming-PC er ideale asdf Gamin(1..."
},
1: {
title: "C#",
description: "Microsoft's go to language",
latestTopic: "Main geiles Topic alter"
}
}
},
1: {
title: "Coding Partner Search",
topics: {
0: {
title: "Suche nach Liebe",
description: "Everything about Vanilla JS",
latestTopic:
"Diskussion] Der ideale asdf Gaming-PC er ideale asdf Gamin(1..."
}
}
}
};

function App() {
return (
<div>
{Object.entries(groups).map(([groupKey, group]) => (
<div key={groupKey}>
{Object.entries(group.topics).map(([topicKey, topic]) => {
return (
<div key={topicKey}>
{group.title} - {topic.title}
</div>
);
})}
</div>
))}
</div>
);
}

ReactDOM.render(<App />, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

<div id="root"></div>

关于javascript - 如何映射包含另一个我想要映射的对象并从中返回 JSX 的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53317981/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com