JavaScript使用map遍历数组时如何通过变量key获取对象属性
问题解决说明
错误根因
原有写法无法取值的核心原因是语法逻辑错误:res.datos.cc[0]的作用是读取datos对象下名为cc的属性的第0位元素,而非将cc数组的第0位元素作为键名读取datos的对应属性。
在JavaScript中如果要使用变量/表达式作为对象的键名取值,必须使用方括号访问语法。
实现方案
该需求完全可以通过map方法实现,以下是两种适用场景的写法:
手动指定列对应关系
如果你需要手动控制column和cc数组下标的对应关系,直接修改取值语法即可:
var cc = ['key1','key2','key3','key4','key5']; let result = centers.map(res => { let columns = { 'column1': res.datos[cc[0]], 'column2': res.datos[cc[1]] // 可按照需求自行扩展更多列配置 } return columns; })
批量自动生成列
如果cc数组元素较多,不需要手动逐个配置,可以直接遍历cc数组自动生成columns对象:
var cc = ['key1','key2','key3','key4','key5']; let result = centers.map(res => { let columns = {}; // 遍历cc数组,自动生成column1、column2...的键值对 cc.forEach((key, index) => { columns[`column${index + 1}`] = res.datos[key]; }) return columns; })
内容的提问来源于stack exchange,提问作者Frank
相关产品推荐
相关产品推荐

