如何在reactjs中显示地图内对象数组中的数据而不重复



在reactjs 中需要一些帮助

我在下面有这个数据,我想不重复地显示它,这意味着,它应该是";A"B";以及";D";,我想在下面的地图里做这个。

const person = {
con: [
{ category: "A", name: "john"  },
{ category: "A", name: "john" },
{ category: "B", name: "rahul" },
{ category: "B", name: "jay" },
{ category: "C", name: "dave" },
{ category: "D", name: "alex" },
{ category: "D", name: "alex" },
{ category: "E", name: "sam1" },
{ category: "F", name: "sam2" },
{ category: "G", name: "sam3" },
]
};

person.con && person.con.map((data, index) => ( 
console.log(data, 'data')   
// I want to display results here...

))

预期输出:

{ category: "A", name: "john"  },
{ category: "B", name: "rahul" },
{ category: "C", name: "dave" },
{ category: "D", name: "alex" },
{ category: "E", name: "sam1" },
{ category: "F", name: "sam2" },
{ category: "G", name: "sam3" },

这可能吗?非常感谢。

这里有一个示例代码

const person = {
con: [
{ category: "A", name: "john"  },
{ category: "A", name: "john" },
{ category: "B", name: "rahul" },
{ category: "B", name: "jay" },
{ category: "C", name: "dave" },
{ category: "D", name: "alex" },
{ category: "D", name: "alex" },
{ category: "E", name: "sam1" },
{ category: "F", name: "sam2" },
{ category: "G", name: "sam3" },
]
};
const duplicateCheck = [];

person.con && person.con.map((data, index) => {
if (duplicateCheck.includes(data.category))
return null;
duplicateCheck.push(data.category);
return data;
}).filter((e)=>(e))
// Above code returns filtered out array

输出:

[ { category: 'A', name: 'john' },
{ category: 'B', name: 'rahul' },
{ category: 'C', name: 'dave' },
{ category: 'D', name: 'alex' },
{ category: 'E', name: 'sam1' },
{ category: 'F', name: 'sam2' },
{ category: 'G', name: 'sam3' } ]

我认为它应该是这样的:稍微重组数据,使其更容易渲染,然后再渲染。

const person = {
con: [
{ category: "A", name: "john" },
{ category: "A", name: "doe" },
{ category: "B", name: "rahul" },
{ category: "B", name: "jay" },
{ category: "C", name: "dave" },
{ category: "D", name: "alex" },
{ category: "D", name: "devid" },
{ category: "E", name: "sam" },
{ category: "F", name: "sam" },
{ category: "G", name: "sam" }
]
};
const groupedByCategory = person.con.reduce((acc, item) => {
if (!Array.isArray(acc[item.category])) {
acc[item.category] = [];
}
acc[item.category].push(item.name);
return acc;
}, {});
const Comp = () => {
return Object.entries(groupedByCategory).map(([category, names]) => {
return (
<div>
<h3>{category}</h3>
<ul>
{names.map((name) => (
<li>{name}</li>
))}
</ul>
</div>
);
});
};

最新更新