如何在Node.js的服务器端使用Object.values()

Object.values()收到以下错误:

TypeError:Object.values不是一个函数。

从这个问题在stackoverflow – 我看到Object.values()不支持在所有的浏览器。

但我在服务器端的Node.js中使用的function – 如何在Node.js中使用Object.values()它看起来如此直观像Object.keys()

Object.valuesObject.values中的一项新function。 这是非常stream血的边缘。 Node.js从版本7.0完全支持它 。

6.8.1支持它,但是它被认为是不稳定的,被锁在--harmony标志后面。

你可以:

  • 升级到最新的Node.js LTS并使用--harmony
  • 升级到最新的Node.js Current
  • 使用polyfill

对于版本ECMAScript2017, Object.values()处于状态“草稿”,这里是规范: ECMAScript 2017草案(ECMA-262)该规范中的“Object.values”的定义。 。

Object.values()方法返回一个给定对象自己的枚举属性值的数组,其顺序与for … in循环提供的顺序相同(不同之处在于for-in循环枚举了原型链中的属性以及)。

如果在NodeJS环境中没有任何改变,你可以通过使用返回一个键数组并且链接一个Array.prototype.map()方法的Object.keys()来返回所需的对象数组值。

 const obj = { foo: "bar", baz: 42 }, // Object.values() objValues = Object.values(obj), // Object.keys() and map(), objKeysMap = Object.keys(obj).map((k) => obj[k]); console.log('objValues:', objValues); console.log('objKeysMap:', objKeysMap); 

Lodash是一个非常棒的工具来简化你的JavaScript代码。 你可以使用_.values

 var _ = require('lodash'); _.values({ a: 'a' }) // => ['a'] 

如果你不想升级节点,可以select3种方法

  1. 映射键在这个答案在这里input链接描述
  2. 使用lodash作为@sakovias的另一个答案
  3. 使用这个object.values npm包