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

npr*_*npr 56 javascript node.js

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

TypeError:Object.values不是函数.

从stackoverflow上的这个问题 - 我看到Object.values()所有浏览器都不支持.

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

Que*_*tin 72

Object.valuesES2017的新功能.这是非常前沿的.Node.js 从7.0版开始全面支持它.

6.8.1支持它,但它被认为是不稳定的并且被锁定在--harmony旗帜后面.

你可以:

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

  • 使用`node -v`找出你正在使用的Node版本. (3认同)

Yos*_*ero 21

Object.values()处于ECMAScript2017版本的状态"Draft"中,此处为规范:ECMAScript 2017 Draft(ECMA-262)该规范中"Object.values"的定义..

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

在NodeJS环境中没有任何改变你可以通过使用Object.keys()来实现相同的功能,它返回一个键数组并链接一个Array.prototype.map()方法来返回Object值的所需数组:

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);
Run Code Online (Sandbox Code Playgroud)


sak*_*ias 11

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

var _ = require('lodash');
_.values({ a: 'a' }) // => ['a']
Run Code Online (Sandbox Code Playgroud)


tho*_*paw 11

我正在开发一个AWS Lambda,现在我对同一个问题进行了标记,我通过这个简单的行解决了它(假设a是对象) const values = Object.keys(a).map(k => a[k]);