JavaScript中如何将API数据转换为指定键值对象格式
问题:将数组转换为指定格式的对象
我正在本地重新处理API数据,在JavaScript里碰到了问题。我需要遍历表格里的每个名称,把下面这种格式的数组:
[{ "Name": "USERNAME", "Status": 1234, "information": "Has something here" }, ... ]
转换成对象结构(注:原需求里的目标结构是对象,数组不支持这种键值对形式):
{ "USERNAME": { "Status": 1234, "information": "Has something here" }, ... }
我当前的代码是这样的:
let array = [] rows.forEach((row) => { let obj = { Name: row.name, Status: 1234, "information": "Has Something here" } array.push(obj) })
我试过几种方法,比如先建包含名称的数组再给每个名称加对象,但没成功。还试过用array.push({[row.name]: {"Status": 1234, "information": "Has something here"}})往数组里加元素,结果得到的是下面这样,不是我要的结构:
[{ "USERNAME": { "Status": 1234, "information": "Has something here" } }, ... ]
解决方案
你不需要用数组存储结果,直接初始化一个空对象,遍历的时候把每个用户名作为键,对应的状态和信息组成的对象作为值赋值进去即可。
方法一:使用forEach遍历构建
// 初始化空对象而非数组 let resultObj = {}; rows.forEach((row) => { // 以用户名为键,状态和信息组成的对象为值 resultObj[row.name] = { Status: 1234, information: "Has something here" }; });
方法二:用Object.fromEntries简洁实现
const resultObj = Object.fromEntries( rows.map(row => [ row.name, { Status: 1234, information: "Has something here" } ]) );
两种方法最终都会得到你需要的键值对结构,每个用户名对应其状态和信息对象。
内容的提问来源于stack exchange,提问作者ScarsTRF
相关产品推荐
相关产品推荐

