如何在对象内部函数中根据用户输入访问对象属性?
解决对象内函数访问属性的问题
嘿,我来帮你搞定这个代码问题!你现在的代码里有两个关键问题,导致没法正确返回指定用户的体重:
- this的指向搞混了:在
weight方法里,this指向的是整个data对象,而data里并没有name这个属性,你要找的是data.info这个数组里的项。 - 数组的访问方式错误:
info是一个数组,不是以用户名为键的对象,所以不能用this.name[name]这种方式访问,得用数组方法去查找匹配的元素。
修正后的代码方案
我们可以用数组的find方法来遍历info数组,找到名字匹配的对象,然后返回它的体重:
const data = { info: [ {name: "martin", weight: "2kg"}, ], weight(name) { // 从info数组里找到name匹配的对象 const user = this.info.find(item => item.name === name); // 找到的话返回体重,没找到可以返回提示或者undefined return user ? user.weight : "用户不存在"; }, }; console.log(data.weight("martin")); // 输出: 2kg
解释一下细节
this.info:因为this指向data对象,所以可以直接访问data里的info数组。find方法:会遍历数组,返回第一个满足条件(item.name === name)的元素,如果找不到就返回undefined,所以我们加了个三元判断处理没找到的情况,避免报错。
这样调用data.weight("martin")就能正确返回对应的体重啦~
内容的提问来源于stack exchange,提问作者user1206988
相关产品推荐
相关产品推荐

