Object.values() 的替代版本

新手上路,请多包涵

我正在寻找 Object.values() 函数的替代版本。

如此 处所述,Internet Explorer 不支持该功能。

执行以下示例代码时:

 var obj = { foo: 'bar', baz: 42 };
console.log(Object.values(obj)); // ['bar', 42]

它适用于 Firefox 和 Chrome,但在 IE11 中会抛出以下错误:

对象不支持属性或方法“值”

在这里你可以测试它: Fiddle

那么,什么是快速修复?

原文由 Evgenij Reznik 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

您可以使用 Object.keys() 获取键数组,然后使用 map() 获取值。

 var obj = { foo: 'bar', baz: 42 };
var values = Object.keys(obj).map(function(e) {
  return obj[e]
})

console.log(values)

使用 ES6,您可以使用箭头函数将其写在一行中。

 var values = Object.keys(obj).map(e => obj[e])

原文由 Nenad Vracar 发布,翻译遵循 CC BY-SA 3.0 许可协议

Object.values() 是 ES8(2017 年 6 月)规范的一部分。使用 Cordova,我意识到 Android 5.0 Webview 不支持它。因此,我执行了以下操作,仅在不支持该功能时才创建 polyfill 函数:

 if (!Object.values) Object.values = o=>Object.keys(o).map(k=>o[k]);

原文由 Chong Lip Phang 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题