如何在JavaScript循环中使用变量拼接对象属性名?
用循环简化session属性赋值的正确写法
我原本重复编写了以下代码来给session赋值:
req.session.personne_1_nom = req.body.personne_1_nom; req.session.personne_2_nom = req.body.personne_2_nom; req.session.personne_3_nom = req.body.personne_3_nom; req.session.personne_4_nom = req.body.personne_4_nom;
为了减少代码行数,我尝试用循环实现,但写法有问题:
for (let toto = 1; toto < 5; toto++) { req.session.personne_+toto+_nom = req.body.personne_+toto+_nom; }
请问如何在代码中正确加入toto变量?
在JavaScript中,当你需要动态拼接对象属性名时,不能使用.(点语法),必须改用方括号语法。点语法只能识别固定的属性名称,而方括号允许你传入字符串形式的动态属性名。
正确的写法有两种:
写法一:先定义属性名变量(可读性更好)
for (let toto = 1; toto < 5; toto++) { const propName = `personne_${toto}_nom`; req.session[propName] = req.body[propName]; }
写法二:直接在方括号内拼接(更简洁)
for (let toto = 1; toto < 5; toto++) { req.session[`personne_${toto}_nom`] = req.body[`personne_${toto}_nom`]; }
两种写法都能实现目标,可根据代码复杂度选择。
内容的提问来源于stack exchange,提问作者Julie Chaumard
相关产品推荐
相关产品推荐

