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

TypeScript如何通过对象名和属性名访问对应对象的属性值

解决方案

你的核心问题是用字符串形式的对象名称匹配对应实例,之前的indexOf方法失效是因为你把字符串(objectName)和实例对象放在一起对比,自然找不到匹配项。不想给实例加额外属性的话,最直接高效的方式是用名称-实例映射表:

实现代码

import object1 from '../path/to/object1';
import object2 from '../path/to/object2';

// 建立对象名称到实例的映射
const objectMap = {
  'object1': object1,
  'object2': object2
};

function getPropertyValue(objectName, propertyName) {
  // 根据名称获取对应实例
  const targetObj = objectMap[objectName];
  if (targetObj) {
    // 检查属性是否存在,避免输出undefined
    if (propertyName in targetObj) {
      console.log(targetObj[propertyName]);
    } else {
      console.log(`对象 ${objectName} 不存在属性 ${propertyName}`);
    }
  } else {
    console.log(`不存在名为 ${objectName} 的对象`);
  }
}

方案优势

  • 无需遍历所有对象,直接通过键值对查找,性能更优(尤其对象数量较多时)
  • 不用修改原有类的定义,完全避免添加不必要的name属性
  • 扩展性强:后续新增对象时,仅需在objectMap中添加一行键值对即可

补充说明

你之前的遍历方案之所以输出undefined,是因为非目标对象没有对应属性。用映射表配合propertyName in targetObj的存在性检查,就能完美避免这种无效输出。

内容的提问来源于stack exchange,提问作者rmoreltandem

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 10:01:21