如何访问键名需动态拼接的JavaScript对象属性值
你需要用对象方括号访问语法来实现动态属性名读取,拼接好完整属性名后放在方括号内即可。
修正后代码
bodyLength.map((el, i) => { // 动态拼接属性名后用方括号读取 console.log(values[`bodyTitleEn${i}`]); body.push({ title: [ { key: 'en', value: values[`bodyTitleEn${i}`], }, { key: 'ku', value: values[`bodyTitleKu${i}`], }, { key: 'ar', value: values[`bodyTitleAr${i}`], }, ] // 其余原有逻辑保持不变 }) })
原理说明
- JavaScript 访问对象属性有两种可用语法:
- 点语法:仅支持固定属性名,你之前的写法会先尝试读取不存在的
values.bodyTitleEn属性,得到undefined后再和i拼接,自然不符合预期 - 方括号语法:方括号内部可以传入任意字符串表达式,JS会先计算表达式结果,再把结果作为完整属性名读取对应值
- 点语法:仅支持固定属性名,你之前的写法会先尝试读取不存在的
- 如果环境不支持ES6模板字符串,也可以用字符串拼接写法:
values['bodyTitleEn' + i],效果完全一致
内容的提问来源于stack exchange,提问作者Lhon Rafaat Mohammed
相关产品推荐
相关产品推荐

