如何将JavaScript数组转换为以1起始索引为属性的单个对象
map方法的作用是按规则遍历数组返回同等长度的新数组,所以你现在得到的是每个元素为独立对象的数组,无法直接得到单个聚合对象。
方案1:使用Array.reduce实现(兼容性好)
const result = row.values.reduce((acc, current, index) => { acc[index + 1] = current return acc }, {})
说明:reduce以空对象作为初始累计值,遍历过程中把1起始的下标作为属性名、元素内容作为属性值存入累计对象,最终直接返回聚合后的单个对象。
方案2:使用Object.fromEntries实现(ES2019+支持,写法更简洁)
const result = Object.fromEntries( row.values.map((item, index) => [index + 1, item]) )
说明:先通过map生成[属性名, 属性值]格式的二维数组,再通过Object.fromEntries直接转换为目标对象。
补充说明
你之前的写法里{i: e}还存在动态键的语法问题:直接写i作为键会被识别为固定字符串"i",如果要使用变量的值作为属性名,需要用方括号包裹变量,即{ [i + 1]: e }。
内容的提问来源于stack exchange,提问作者codecustard
相关产品推荐
相关产品推荐

