Object.keys() 和 Object.value() 哪一个更快?


前端中,我们常常需要获取对象属性, Object.keys()Object.values() 都是获取对象属性的方法,两者的区别是:

  • Object.keys() 返回对象的所有键名

  • Object.values() 返回对象的所有键值

进行一次测试

开始测试

我们建立一个测试的 JavaScript 文件,来测试一下结果:

const obj = {
  name: "MacBook Pro 13.3",
  cpu: "Apple M2",
  os: "macOS Sonoma",
  ssd: "512gb",
  ram: "24gb",
};

console.time("keys");
for (let i = 0; i < 1000000; i++) {
  Object.keys(obj);
}
console.timeEnd("keys");

console.time("values");
for (let i = 0; i < 1000000; i++) {
  Object.values(obj);
}
console.timeEnd("values");

测试结果

在 Apple M2 的 MacBook 上,执行的结果如下:

keys: 26.555ms
values: 26.002ms

测试结论

Object.values()Object.keys() 快 0.5 ms。

为什么会这样呢?

我们得先分析一下两个方法的原理:

  • Object.keys()只是返回键名,需要遍历对象的属性进行推断。

  • Object.values()可以直接读取内部属性值数组,减少了中间处理。

Object.keys() 的工作流程是遍历对象属性得到每个键名,然后将键名插入数组,最终返回一个数组。

Object.values() 工作流程是访问[[Values]]内部属性,然后直接返回属性值数组。

换一句话说,Object.values() 跳过了遍历和插入数组的步骤,直接返回内部的属性值数组。

因此,在实际开发中,如果需要频繁获取对象属性,可以考虑优先使用 Object.values()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Luke Paul Na

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值