JavaScript中如何动态拼接变量名获取对应属性值?
动态获取对象的带编号属性值
你写的props.attributes.title+i是错误的,这会把props.attributes.title(如果不存在这个属性就是undefined)和变量i直接拼接成字符串,根本不是访问title1/title2这类目标属性。
正确的做法是用对象的方括号访问语法,因为方括号里可以放动态拼接的字符串作为属性名,直接修改你的函数就能实现需求:
function getTitle(i){ // 用方括号拼接出动态属性名 var output = props.attributes["title" + i]; return output; }
比如当i=1时,"title"+i会生成字符串"title1",这就等价于你静态写的props.attributes.title1,能根据i的值自动匹配对应的属性。
你之前写的myScope["title"+i]其实已经用到了方括号语法,但这里不需要额外创建myScope对象,直接操作props.attributes更直接。如果后续需要把这些动态属性存到自定义对象里,可以这么用:
function getTitle(i){ var myScope = {}; // 将props中的动态属性存入自定义对象 myScope["title" + i] = props.attributes["title" + i]; // 从自定义对象中取值返回 return myScope["title" + i]; }
简单总结:JavaScript访问对象属性有两种方式:
- 点语法:
obj.property,适合属性名是固定字符串的场景 - 方括号语法:
obj["property"],支持动态生成的属性名字符串,完美适配你这种带编号的动态属性需求
内容的提问来源于stack exchange,提问作者Boberwt
相关产品推荐
相关产品推荐

