Object.values()
收到以下错误:
TypeError:Object.values不是函数。
来自stackoverflow上的this问题 - 我发现并非所有浏览器都支持Object.values()
。
但我在服务器端使用Node.js中的函数 - 如何在Node.js中使用Object.values()
它看起来像Object.keys()
那么直观?
答案 0 :(得分:72)
Object.values
是ES2017中的新功能。这是非常前沿的。 Node.js从版本7.0开始具有完整的support for it。
6.8.1支持它,但它被认为是不稳定的,并且被锁定在--harmony
标志后面。
你可以:
--harmony
答案 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答案 5 :(得分:2)
这是一个只有在尚未定义的情况下才启动的polyfill:
const objectToValuesPolyfill = (object) => {
return Object.keys(object).map(key => object[key]);
};
Object.values = Object.values || objectToValuesPolyfill;
答案 6 :(得分:0)
答案 7 :(得分:0)
或者使用underscore.js
var _ = require('underscore');
const obj = {
foo: "bar",
baz: 42
};
console.log(_.values(obj));
// ["bar",42]