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

如何获取作为Map键传入的对象的变量名并按指定格式输出内容?

如何获取作为Map键传入的对象的变量名并按指定格式输出内容?

嘿,我明白你遇到的问题啦——你想把作为Map键的那些变量名(比如personObj、carObj)给打印出来,但直接遍历Map.keys()只能拿到对象本身,根本拿不到变量名对吧?这是因为当你把对象作为Map的键时,Map存储的是这个对象的引用,而不是你给它起的变量名。那咱们换个思路来解决这个问题:

核心思路是把变量名和对应的值/函数绑定在一起存储,这样就能同时拿到名称和内容,然后按照你想要的格式输出。

修改后的完整代码示例

const personObj = {
  fName: 'John',
  lName: 'Doe',
  age: 30
};
const carObj = {
  type: 'Fiat',
  model: 500,
  color: 'blue'
};
const workDetailsObj = {
  designation: 'Software Engineer',
  salary: 30000,
  company: 'GE'
};

function displayColors() {
  return `Red Color`; // 改成返回值,方便我们直接获取输出内容
}
let primitiveValue = `Map Object's Contents`;

// 用数组保存每个条目的名称、类型和对应值,把变量名和值绑定
const entries = [
  { name: 'personObj', value: personObj, type: 'object' },
  { name: 'carObj', value: carObj, type: 'object' },
  { name: 'workDetailsObj', value: workDetailsObj, type: 'object' },
  { name: 'displayFunction', value: displayColors, type: 'function' },
  { name: 'primitiveValue', value: primitiveValue, type: 'primitive' }
];

// 如果还是需要使用Map,我们可以基于这个数组构建(保留原需求的Map功能)
const mapObj = new Map();
entries.forEach(entry => {
  mapObj.set(entry.value, entry); // 把对象/值作为键,存储包含名称的完整条目
});

// 按照你想要的格式输出内容
entries.forEach(entry => {
  switch(entry.type) {
    case 'object':
      console.log(`${entry.name} details:\n`);
      Object.entries(entry.value).forEach(([key, val]) => {
        console.log(`${key} : '${val}'`);
      });
      console.log('\n');
      break;
    case 'function':
      console.log(`${entry.name} output:\n`);
      console.log(entry.value()); // 调用函数并打印返回的内容
      console.log('\n');
      break;
    case 'primitive':
      console.log(`${entry.name} value\n`);
      console.log(`: ${entry.value}.\n`);
      break;
  }
});

代码说明

  1. 绑定变量名与值:通过entries数组,我们把每个变量的名称、类型和对应值存在一起,这样就能轻松获取你想要的personObj这类变量名了。
  2. 兼容Map需求:如果还是需要使用Map,我们可以基于这个数组构建,把对象/原始值作为键,存储包含名称的完整条目,兼顾原需求的Map功能。
  3. 格式输出:通过判断类型,分别处理对象(遍历键值对)、函数(调用并打印返回值)、原始值(直接输出),完全匹配你想要的输出格式。

运行这段代码后,控制台就会输出你期望的内容啦!

备注:内容来源于stack exchange,提问作者TEC_Abode of Learning

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 16:05:28