javascript - React:重复值仅显示在材料 ui 表中的第一项上
问题描述
我正在尝试制作一个材质 ui 表,其主体映射到一个数组上,而不是重复项目的值,我想让一个具有重复值的项目只显示在第一个孩子上。
如果数据看起来像这样:
[
{name: 'x', value: '123'},
{name: 'x', value: '124'},
{name: 'x', value: '125'},
{name: 'y', value: '234'},
{name: 'y', value: '235'},
]
如何在第一行显示“x”,而不在下一行重复,并保持值存在?等等等等。
解决方案
您似乎想根据某个字段删除重复项。您可以构建一个新数组并遍历旧数组,跟踪您已经看到的键:
const data = [
{ name: 'x', value: '123' },
{ name: 'x', value: '124' },
{ name: 'x', value: '125' },
{ name: 'y', value: '234' },
{ name: 'y', value: '235' },
];
const result = [];
const seenKeys = new Set();
for (const row of data) {
if (seenKeys.has(row.name)) continue;
result.push(row);
seenKeys.add(row.name);
}
console.log(result);
我正在使用Set来跟踪已经看到哪些键。
根据评论,目的是对数据进行分组:
const data = [
{ name: 'x', value: '123' },
{ name: 'x', value: '124' },
{ name: 'x', value: '125' },
{ name: 'y', value: '234' },
{ name: 'y', value: '235' },
];
const groups = new Map();
for (const row of data) {
let group = groups.get(row.name);
if (!group) {
group = [];
groups.set(row.name, group);
}
group.push(row);
}
const result = [...groups].map(([name, rows]) => ({ name, rows }));
console.log(result);
我已将.name
字段保留在原始值上,但如果需要,您可以映射它们以删除它们。
当然,如果您的数据只是一个名称和一个值,则group
可以将行推送到 ,而不是推送row.value
。你最终会得到 eg [ { name: 'x', rows: ['123', '124', '125] }, ... ]
。
推荐阅读
- python - Selenium python单击悬停时出现的元素
- android - 每次最小化应用程序时显示通知
- python - 使用pyodbc通过linux连接MS-SQL数据库时如何解决错误
- django - 具有唯一约束的电子邮件字段会阻止序列化程序的 PUT 方法保存。django rest_framework
- c# - WPF DataGrid 根据 ID 显示数据
- html - 宽度较小的 HTML5 日期选择器在 Chrome 中不显示完整日期
- pointers - 我们可以将指针归类为数据结构中的内置数据类型吗?
- numpy - Python image_list 到 np.array
- javascript - 使用 AdminReports.Activities.list 获取每个用户的最新日期和操作
- java - 在 Java 的文本框中显示完整的 SQL 数组