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

能否实现返回无引号对象属性名数组?求myFun函数实现方案

这个需求不可行,核心是对JavaScript数据类型存在误解

首先直接给结论:你想要返回[a, b]这种形式的数组在JavaScript里是不可能实现的,因为这种写法的含义和你预期的完全不同。

为什么你的期望不符合JS的规则?

  • 在JavaScript中,[a, b]表示的是一个包含**变量a和变量b**的数组,而不是字符串"a"和"b"。如果这些变量没有提前定义,代码会直接抛出ReferenceError错误。
  • 对象的属性名本质上就是字符串(或者Symbol类型),所以Object.keys()返回字符串数组是完全符合JS规范的正确结果。你看到的不带引号的[a, b]只是某些控制台的视觉简化显示,底层存储的依然是带引号的字符串。比如你在浏览器控制台输入['a', 'b'],它可能会显示成(2) ['a', 'b']或者简化为[a, b],但数组里的元素依然是字符串类型。

正确的实现方式

如果你需要的是获取对象的属性名数组(这是实际开发中有用的需求),正确的函数应该是这样的:

function myFun(object) {
  return Object.keys(object);
}

测试这个函数:

console.log(myFun({a:6})[0]); // 控制台会输出 'a'(或者简化显示为a,但实际值是字符串)

这里控制台显示的a只是省略了引号的展示形式,实际返回的元素是字符串类型的"a"。

你初始代码的问题

你的初始代码里硬编码了object = { a: 1, b: 2, c: 3 },这会覆盖传入的参数,所以无论你传什么对象,函数都会遍历这个固定对象,这显然不符合需求。

总结一下:你想要的[a, b]形式在JS中不是存储属性名的正确方式,需求本身混淆了“控制台显示效果”和“实际数据类型”。正确的做法是返回字符串数组,控制台的简化显示已经是你想要的视觉效果了。

内容的提问来源于stack exchange,提问作者MR. Stranger

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 16:42:55