处理一个包含对象的数组,并将这些对象中相同的 key 的值收集到一个新的对象中,每个 key 对应一个数组

处理一个包含对象的数组,并将这些对象中相同的 key 的值收集到一个新的对象中,每个 key 对应一个数组。以下是实现这一目标的 JavaScript 代码示例:

假设 res.data 的结构如下:

[
  { "name": "Alice", "age": 30, "city": "Wonderland" },
  { "name": "Bob", "age": 25, "city": "Gotham" },
  { "name": "Charlie", "age": 35, "city": "Metropolis" }
]

我们希望创建如下的结构:

{
  "name": ["Alice", "Bob", "Charlie"],
  "age": [30, 25, 35],
  "city": ["Wonderland", "Gotham", "Metropolis"]
}

以下是实现这个任务的 JavaScript 代码:

// 假设 res 是我们收到的响应对象
const res = {
  data: [
    { "name": "Alice", "age": 30, "city": "Wonderland" },
    { "name": "Bob", "age": 25, "city": "Gotham" },
    { "name": "Charlie", "age": 35, "city": "Metropolis" }
  ]
};
// 创建一个新对象,使用 res.data 数组里面所有对象中相同的 key 作为 key 数组
const createKeyArrayObject = (dataArray) => {
  const result = {};
  // 遍历 dataArray 中的每一个对象
  dataArray.forEach(item => {
    // 遍历每个对象中的每一个键
    for (const key in item) {
      if (item.hasOwnProperty(key)) {
        // 如果 result 中没有该键,则初始化为一个空数组
        if (!result[key]) {
          result[key] = [];
        }
        // 将对应的值 push 到数组中
        result[key].push(item[key]);
      }
    }
  });

  return result;
};

// 调用函数并传入 res.data
const processedData = createKeyArrayObject(res.data);

console.log(processedData);

这个代码的工作流程如下:

  1. 定义一个函数 createKeyArrayObject,它接受一个对象数组 dataArray 作为参数。
  2. 初始化一个空对象 result
  3. 使用 forEach 循环遍历 dataArray 数组中的每一个对象 item
  4. 对于每个对象,使用 for...in 循环遍历其键。
  5. 检查 item 是否拥有该键(使用 hasOwnProperty 以确保不会遍历到原型链上的属性)。
  6. 如果 result 中没有该键,则初始化为一个空数组。
  7. 将每个键对应的值 pushresult 中相应的键数组。
  8. 返回处理后的结果对象 result

这样,processedData 就是包含所有键数组并将对应值 push 进去的新对象。这个方法适用于处理对象数组并将相同键的值收集到数组中。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pony君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值