在 JavaScript 中,将具有相同 key 属性的对象分组到同一个数组中。
分享 22
在 JavaScript 中,你可以使用 Array.prototype.reduce()
方法,将具有相同 key
属性的对象分组到同一个数组中。以下是一个实现示例:
示例代码
const data = [
{ key: 'a', value: 1 },
{ key: 'b', value: 2 },
{ key: 'a', value: 3 },
{ key: 'c', value: 4 },
{ key: 'b', value: 5 }
];
const groupedData = data.reduce((acc, item) => {
// 检查当前 key 是否已经存在于结果对象中
if (!acc[item.key]) {
acc[item.key] = [];
}
// 将当前项添加到相应的 key 数组中
acc[item.key].push(item);
return acc;
}, {});
// 如果需要将结果转化为数组格式
const result = Object.values(groupedData);
console.log(groupedData);
/*
{
a: [ { key: 'a', value: 1 }, { key: 'a', value: 3 } ],
b: [ { key: 'b', value: 2 }, { key: 'b', value: 5 } ],
c: [ { key: 'c', value: 4 } ]
}
*/
console.log(result);
/*
[
[ { key: 'a', value: 1 }, { key: 'a', value: 3 } ],
[ { key: 'b', value: 2 }, { key: 'b', value: 5 } ],
[ { key: 'c', value: 4 } ]
]
*/
代码说明
输入数组:data
是一个包含对象的数组,每个对象都有一个 key
和 value
属性。
reduce 方法:遍历数组中的每个元素 item
。
使用 item.key
检查是否已经存在于结果对象 acc
中。
如果不存在,则初始化为一个空数组。
将当前元素 item
添加到对应的 key
数组中。
输出格式:如果需要以对象格式输出,直接使用 groupedData
。
如果需要以数组格式输出,可以使用 Object.values(groupedData)
。
你可以根据需求调整输出的格式或实现逻辑!