【发布时间】:2020-03-17 14:01:47
【问题描述】:
我正在尝试创建一个 React 手风琴下拉菜单,该菜单应显示按数组中每个单独 ID 分组的条目列表。每个 ID 包含一个 thingsThatHaveChangedForThisId 列表,其中可以有多个条目,包括 id、property、previousValue 和 updatedValue JSON 数据如下所示
[{
"id": "id1234",
"thingsThatHaveChangedForThisId": [{
"id": "id1234",
"property": "propertyValue",
"previousValue": "123",
"updatedValue": "456"
},
{
"id": "id1234",
"property": "propertyValue2",
"previousValue": "000",
"updatedValue": "001"
},
]
},
{
"id": "id456",
"thingsThatHaveChangedForThisId": [{
"id": "id456",
"property": "name",
"previousValue": "Anakin Skywalker",
"updatedValue": "Darth Vader"
},
{
"id": "id456",
"property": "lightsaberColor",
"previousValue": "blue",
"updatedValue": "red"
}
]
},
我使用了Object.values(data).map,并且能够得到一大串thingThatHaveChangedForThisId:id、property、previousValue和updatedValue显示在每个ID的下拉列表中。问题在于它只是一个不按单个条目分组的字符串。我想将 thingsThatHaveChangedForThisId 中的每个项目分组,以便在单击下拉列表时将它们组织为 4 个组而不是一个大字符串。我尝试过映射 JSON 数据的键并记录结果,如下所示:
const keys = Object.keys(data);
for (let i = 0; i < keys.length; i++) {
console.log(data[keys[i]]);
}
这为我提供了由键索引的 JSON 对象中的每个项目。这几乎是我想要的。我现在需要按索引分组的子数组 thingsThatHaveChangedForThisId 的每个项目,以便我可以使其成为可读格式。类似的东西:
Entries for id1234:
1. id: id1234
property: property
previousValue: previousValue
updatedValue: updatedValue
2. id: id1234
property: property2
previousValue: previousValue2
updatedValue: updatedValue2
3. id: id1234
property: property3
previousValue: previousValue3
updatedValue: updatedValue3
一旦我的数据格式正确,我就可以让它看起来不错。我也尝试过以相同的方式映射数据的值,但它会抛出错误“每个孩子都应该有一个唯一的关键道具”。我认为他们所做的,因为数组中的每个孩子都是一个键值对。我认为我在正确的轨道上,但我已经被困了一段时间。任何帮助将不胜感激!谢谢。
【问题讨论】:
-
请提供您需要的结果示例,以便更好地理解
-
您好,感谢您的回复,我编辑了预期的结果,我不知道如何摆脱 SO 上的空白,但理想情况下,列表中的每个条目都以数字为索引并显示该索引的详细信息。不知道这是否更清楚。
-
正如@rupii 提到的,你能发布你预期输出的格式吗?
标签: javascript arrays json reactjs frontend