如何通过函数参数指定对象属性,向对应数组执行push操作?
解决方法
你遇到的问题是因为JavaScript的点语法只能访问字面量命名的属性,而你想用变量propX指定属性名时,必须改用方括号语法。
修改后的代码
var aObj = { prop5: ["nameA5.1", "nameA5.2"], prop6: ["nameA6.1", "nameA6.2"] }; function func (propX, namn) { // 用方括号访问动态指定的属性 aObj[propX].push(namn); return aObj; }; // 调用时传入目标属性名和要添加的字符串 console.log(func("prop5", "test text")); console.log(func("prop6", "new item for prop6"));
额外的防错处理
如果担心传入的属性名不存在,或者对应的属性不是数组,可以加个简单的判断避免报错:
function func (propX, namn) { // 检查属性是否存在且为数组,不存在则初始化空数组 if (!Array.isArray(aObj[propX])) { aObj[propX] = []; } aObj[propX].push(namn); return aObj; };
这样不管传入的属性是否存在,都能安全地添加元素。
内容的提问来源于stack exchange,提问作者gm76
相关产品推荐
相关产品推荐

