You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在对象内部函数中根据用户输入访问对象属性?

解决对象内函数访问属性的问题

嘿,我来帮你搞定这个代码问题!你现在的代码里有两个关键问题,导致没法正确返回指定用户的体重:

  1. this的指向搞混了:在weight方法里,this指向的是整个data对象,而data里并没有name这个属性,你要找的是data.info这个数组里的项。
  2. 数组的访问方式错误: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:18:39