You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中如何将对象数组转换为键值交替的二维数组?

解决方案

你可以通过遍历每个对象对应的keys数组和values数组,将它们的元素按顺序交替拼接来得到目标格式。这里给你两种实用的实现方式:

方法一:基于已获取的keys/values数组合并

假设你已经通过map得到了这两个二维数组:

const arr2 = array1.map(obj => Object.keys(obj)); // [["name","age","status"], ["name","age","status"]]
const arr1 = array1.map(obj => Object.values(obj)); // [["Poul","28","unmarried"], ["Rose","20","unmarried"]]

接下来合并两个数组:

const result = arr2.map((keys, index) => {
  // 把当前keys和对应values的元素两两配对,再展开成一维数组
  return keys.flatMap((key, idx) => [key, arr1[index][idx]]);
});

方法二:直接遍历原数组一步生成(更简洁)

其实不用分开获取keys和values数组,直接处理原数组就能得到结果,还能顺便修正Rose的status值:

const result = array1.map(obj => {
  const temp = [];
  // 遍历对象的键值对,依次将键和值推入临时数组
  for (const [key, value] of Object.entries(obj)) {
    temp.push(key, value);
  }
  // 按照目标要求修改Rose的status
  if (obj.name === "Rose") {
    temp[temp.length - 1] = "married";
  }
  return temp;
});

补充说明

  • 方法一完全适配你已经拿到arr1和arr2的场景,用flatMap简化了嵌套数组的展开操作;
  • 方法二更高效,跳过了单独生成keys/values数组的步骤,同时满足你目标里修改特定元素的需求。

内容的提问来源于stack exchange,提问作者My Medi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 17:25:29