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

咨询:是否存在返回对象数组而非二维数组的Object.entries()原生替代方法

回答

好问题!我完全懂你想要的效果——一个原生方法能直接把对象转换成包含键值对对象的数组,而不是像Object.entries()那样返回二维数组,还希望在合适的场景下保留原属性的引用。

遗憾的是,目前JavaScript原生并没有提供这样的内置方法。原生的Object.keys()、Object.values()、Object.entries()都是针对基础遍历需求设计的:

  • Object.keys()只返回键名组成的数组
  • Object.values()只返回属性值组成的数组
  • Object.entries()返回二维键值对数组,是为了方便配合for...of或数组方法快速处理键值对,但确实不是你想要的对象数组结构。

不过你说的自定义实现思路完全可行,而且写起来很简单,还能完美保留引用(针对引用类型的属性值)。比如这个工具函数:

function objToKeyValueArray(obj) {
  return Object.entries(obj).map(([key, value]) => ({ key, value }));
}

测试一下引用保留的效果:

const myObj = { user: { name: 'Alice' }, age: 30 };
const arr = objToKeyValueArray(myObj);

// 修改数组里的引用类型属性
arr[0].value.name = 'Bob';
console.log(myObj.user.name); // 输出 'Bob',说明引用确实保留了

如果你需要更定制化的结构(比如把键名字段改成prop而非key),只需要调整map里的返回对象就行,灵活性很高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 06:56:55