如何将给定的JavaScript数组映射为对象?求助对象转换实现方案
数组转对象数组的实现方案
首先需要纠正一个语法问题:你给出的预期输出中,Data应该是数组(而非对象),因为JavaScript对象无法直接将多个独立对象作为自身的顶层内容,正确的预期结构应为:
Data: [ {Name: 'A', Id: 1}, {Name: 'B', Id: 2}, {Name: 'C', Id: 3}, {Name: 'D', Id: 4} ]
核心实现代码
利用数组的map方法即可完成转换,因为Name和Id数组长度一致,我们可以通过索引关联对应项:
// 原始数据 const originalData = { Name: ['A', 'B', 'C', 'D'], Id: [1, 2, 3, 4] }; // 执行转换 const transformedData = originalData.Name.map((name, index) => ({ Name: name, Id: originalData.Id[index] })); console.log(transformedData);
代码解释
originalData.Name.map(...):遍历Name数组的每一项,同时获取当前项的索引index- 每次遍历返回一个新对象,将当前
name赋值给Name属性,再通过index从Id数组中取出对应位置的值赋值给Id属性 - 最终
transformedData就是你需要的对象数组
兼容长度不一致的情况
如果不确定Name和Id数组长度是否完全匹配,可以通过循环做边界处理,避免索引越界:
const transformedData = []; // 取两个数组中较短的长度作为遍历上限 const maxLength = Math.min(originalData.Name.length, originalData.Id.length); for (let i = 0; i < maxLength; i++) { transformedData.push({ Name: originalData.Name[i], Id: originalData.Id[i] }); }
内容的提问来源于stack exchange,提问作者Shelly
相关产品推荐
相关产品推荐

