我有一个嵌套的对象数组,看起来像这样:
[
{
_Category: "Animals",
_Child: {
_Obj: [{_Title: "Monkey", _Link: "www.monkeys.com"}], [{_Title: "Monkey", _Link: "www.monkeys.com"}], etc
}
},
{
_Category: "Fruit",
_Child: {
_Obj: [{_Title: "Apple", _Link: "www.apples.com"}], [{_Title: "Pineapple", _Link: "www.pineapples.com"}], etc
}
}
]
我正在尝试将每个组的_Title
和_Link
附加到JSX元素中。我已经能够毫无问题地渲染_Categories
,但是嵌套值给我带来了麻烦。
当我进入DevTools中的Elements时,我可以看到,每个项目有11个不同的组-这是该特定类别下有多少个对象数组-但_Titles
和_Links
为空。
在下面的代码中,我映射了_Category
数据并以这种方式显示了类别。我是否需要为_Child
对象做类似的事情-也许是另一幅地图?
代码:
Element = ({ cats }) => {
return (
<div>
{cats
.filter((cat) => cat._Root === "Quick Links")
.map((cat) => (
<>
<div className={"colFor-" + cat._Category}>
<h5>{cat._Category}</h5>
{cat._Child._Obj.map((item) => (
<>
<a href={item._Link}>
<p>{item._Title}</p>
</a>
<br />
</>
))}
</div>
</>
))
}
</div>
)
}
cats
如下所示:
更新:正如@Dominik指出的那样,设置obj的方式不正确,所以我对其进行了更改。
答案 0 :(得分:2)
根据示例数据,cat._Child._Obj是一个数组,其中的每个项目也是一个数组,所以我认为您需要先将数组弄平,然后再使用map函数。
const myarr = [[{_Title: "Monkey1", _Link: "www.monkeys1.com"}], [{_Title: "Monkey2", _Link: "www.monkeys1.com"}]];
const myarrFlat = myarr.flat();
myarrFlat.map(cat => console.log(cat._Title, cat._Link));