我试图通过按特定值分组并将该值添加为标签并将其从新数组中的对象中取出来将一个对象数组转换为另一个对象数组。
Input:例如我有这个对象数组:
let tech = [
{ id: 1, grouping: "Front End", value: "HTML" },
{ id: 2, grouping: "Front End", value: "React" },
{ id: 3, grouping: "Back End", value: "Node" },
{ id: 4, grouping: "Back End", value: "PHP" },
];
预期的:我想尝试找出如何实现这一点,其中每个唯一分组都有一个标签,并且选项数组包含该分组的值。
[
{
label: "Front End",
options: [
{ id: 1, value: "HTML" },
{ id: 2, value: "React" },
],
},
{
label: "Back End",
options: [
{ id: 3, value: "Node" },
{ id: 4, value: "PHP" },
],
},
]
我能够达到的最接近的是使用reduce 按分组键进行分组:
const groupedTech = tech.reduce((acc, value) => {
// Group initialization
if (!acc[value.grouping]) {
acc[value.grouping] = [];
}
// Grouping
acc[value.grouping].push(value);
return acc;
}, {});
这给了我这个:
{
"Front End": [
{ id: 1, grouping: "Front End", value: "HTML" },
{ id: 2, grouping: "Front End", value: "React" },
],
"Back End": [
{ id: 3, grouping: "Back End", value: "Node" },
{ id: 4, grouping: "Back End", value: "PHP" },
],
}
但这返回对象而不是数组,并且不会删除分组值。我无法弄清楚如何正确分组,因为在对象数组中我还没有找到一种有效的方法来比较以查看分组是否存在以及如果存在则添加到该嵌套数组中。我使用类似的东西会更好吗.map() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map?感谢任何线索/学习!