在react项目中 ,有一组数据boxinfosData,我想遍历他们,将其中boxId相同的数据遍历在一起, {isSuccess && boxinfosData?.map(item => <BoxItem key={item.id} boxInfo={item} boxRefetch={refetch} scanValue={keyText} setScanValue={setKeyText} />)}修改这段代码以实现
时间: 2024-02-14 11:32:00 浏览: 22
要将boxId相同的数据遍历在一起,您可以使用数组的reduce方法来进行分组。首先,您需要对boxinfosData进行预处理,将具有相同boxId的数据分组在一起。然后,您可以遍历分组后的数据,并渲染对应的组件。
以下是修改后的代码示例:
```jsx
{isSuccess && groupByBoxId(boxinfosData)?.map((group, index) => (
<div key={index}>
{group.map((item) => (
<BoxItem
key={item.id}
boxInfo={item}
boxRefetch={refetch}
scanValue={keyText}
setScanValue={setKeyText}
/>
))}
</div>
))}
// 分组函数
function groupByBoxId(data) {
if (!data) return null;
const groups = data.reduce((acc, item) => {
const boxId = item.boxId;
if (!acc[boxId]) {
acc[boxId] = [item];
} else {
acc[boxId].push(item);
}
return acc;
}, {});
return Object.values(groups);
}
```
在上述代码中,我们将`boxinfosData`数组使用`groupByBoxId`函数进行分组。然后,我们遍历每个分组,并在内部遍历每个分组中的数据,渲染`BoxItem`组件。
请注意,由于我们使用了嵌套的map函数,建议为每个内部遍历的元素提供一个唯一的key值。在这里,我们使用了`item.id`作为key值。如果`item.id`不唯一,可以考虑使用其他唯一标识符。
希望这可以帮助您实现将具有相同boxId的数据遍历在一起的功能!