如何在Node.js的服务器端使用Object.values()
Object.values()
收到以下错误:
TypeError:Object.values不是一个函数。
从这个问题在stackoverflow – 我看到Object.values()
不支持在所有的浏览器。
但我在服务器端的Node.js中使用的function – 如何在Node.js中使用Object.values()
它看起来如此直观像Object.keys()
?
Object.values
是Object.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种方法
- 映射键在这个答案在这里input链接描述
- 使用lodash作为@sakovias的另一个答案
- 使用这个object.values npm包