在 JavaScript 中,将具有相同 key 属性的对象分组到同一个数组中。

myrgd 分享 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 是一个包含对象的数组,每个对象都有一个 keyvalue 属性。
reduce 方法:遍历数组中的每个元素 item
使用 item.key 检查是否已经存在于结果对象 acc 中。
如果不存在,则初始化为一个空数组。
将当前元素 item 添加到对应的 key 数组中。
输出格式:如果需要以对象格式输出,直接使用 groupedData
如果需要以数组格式输出,可以使用 Object.values(groupedData)
你可以根据需求调整输出的格式或实现逻辑!

回复

我来回复
  • 暂无回复内容

联系我们

在线咨询: QQ交谈

邮件:723923060@qq.com

关注微信