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
相关产品推荐
相关产品推荐

