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

如何将JavaScript Map转换为指定格式的对象数组?

问题:将Map转换为指定格式的对象数组

我得到了一个无法控制的键值对Map,需要将其转换为特定格式的对象数组。现有代码如下:

let paramArray1 = [];
let paramArray2 = [];

paramArray1.push({username:"test"})
paramArray1.push({password:"test"})
paramArray1.push({contentType:"application/json"})

let map = new Map();
map.set("username","test");
map.set("password","test");
map.set("contentType","application/json");

for (const [key,value] of map.entries()){
  paramArray2.push({key,value})
}

console.log(paramArray1);
console.log(paramArray2);

运行上述代码后,两个数组包含相同数据,但paramArray2的格式与期望的paramArray1不符。我需要将Map的键值对转换为每个元素是{键名:值}格式的对象数组,而非{key:键名, value:值}的格式。我曾尝试将代码改为:

for (const [key,value] of map.entries()){
  paramArray2.push({key:value})
}

但这会将"key"作为字面量键名,输出为[{key:test, key:test, key:application/json}],不符合需求。请问该如何解决?

解决方案

要实现这个需求,你需要使用JavaScript计算属性名(用方括号[]包裹变量),这样就能把变量key的值作为对象的键名,而非把"key"作为字面量键。

修改后的循环代码:

for (const [key, value] of map.entries()) {
  paramArray2.push({ [key]: value });
}

更简洁的写法(无需手动循环):

你也可以用Array.from或者扩展运算符结合map方法直接转换,代码更精简:

  1. 使用Array.from:
const paramArray2 = Array.from(map, ([key, value]) => ({ [key]: value }));
  1. 使用扩展运算符+map:
const paramArray2 = [...map].map(([key, value]) => ({ [key]: value }));

这样转换后,paramArray2的格式就和paramArray1完全一致了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 18:45:04