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

时间:2016-11-04 11:43:21

标签: javascript node.js

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

  

TypeError:Object.values不是函数。

来自stackoverflow上的this问题 - 我发现并非所有浏览器都支持Object.values()

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

8 个答案:

答案 0 :(得分:72)

Object.valuesES2017中的新功能。这是非常前沿的。 Node.js从版本7.0开始具有完整的support for it

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

你可以:

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

答案 1 :(得分:21)

Object.values()处于状态"草案"对于ECMAScript2017版本,此处为规范:ECMAScript 2017 Draft (ECMA-262) The definition of 'Object.values' in that specification.

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

在NodeJS环境中没有任何改变你可以通过使用返回键数组并链接Object.keys()方法的Array.prototype.map()来返回对象值的所需数组,从而实现相同的目标。 :



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);




答案 2 :(得分:11)

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

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

答案 3 :(得分:10)

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

答案 4 :(得分:4)

如果您不想升级节点

,请选择3
  1. 映射密钥,如this answer
  2. 使用lodash作为@sakovias的另一个答案
  3. 使用此object.values npm package

答案 5 :(得分:2)

这是一个只有在尚未定义的情况下才启动的polyfill:

const objectToValuesPolyfill = (object) => {
  return Object.keys(object).map(key => object[key]);
};
Object.values = Object.values || objectToValuesPolyfill;

答案 6 :(得分:0)

将Node.js升级到最新版本。它使您可以使用

Object.values()

您可以从官方网站获取它: https://nodejs.org/en/download/current/

对我有用:)

答案 7 :(得分:0)

或者使用underscore.js

var _ = require('underscore');

const obj = { 
    foo: "bar", 
    baz: 42 
  };

console.log(_.values(obj));
// ["bar",42]