2016-11-04 25 views
33

Object.values()使用服務器端Object.values()收到以下錯誤:如何在Node.js的

TypeError: Object.values is not a function.

this問題上的計算器 - 我看到Object.values()是不是在所有的瀏覽器都支持。

但是我在服務器端使用Node.js中的函數 - 如何在Node.js中使用Object.values()它看起來很直觀,就像Object.keys()

+0

「但我使用它在服務器端代碼」 - 使用Node.js? – evolutionxbox

+0

的問題是如title中所述找到如何在node.js中使用Object.values()。我編輯了一些問題,以便在正文中明確表達。爲什麼downvote它不是重複的? – npr

+0

我沒有downvote。由於沒有特定的性質,我認爲這是一個重複,現在已經收回。 – evolutionxbox

回答

43

Object.valuesES2017中的一項新功能。這是非常流血的優勢。 Node.js從版本7.0開始有完整的support for it

6.8.1支持它,但它被認爲不穩定並被鎖定在--harmony標誌後面。

您可以:

  • 升級到最新的Node.js LTS和使用--harmony
  • 升級到最新的Node.js當前
  • 使用填充工具
+0

就是爽 - 謝謝你 – npr

+2

這裏有一個體面的填充工具:HTTPS:/ /www.npmjs.com/package/object.values –

+0

謝謝,能夠用這個答案修復我的Heroku應用程序。 – Antoine

14

Object.values()是在版本ECMAScript2017的狀態「Draft」中,這裏的規範是:ECMAScript 2017 Draft (ECMA-262) The definition of 'Object.values' in that specification.

Object.values()方法以與for ... in循環提供的順序相同的順序返回給定對象自己的可枚舉屬性值的數組(不同之處在於for-in循環枚舉了原型鏈中的屬性以及)。

,而無需在的NodeJS改變什麼環境,你可以通過使用Object.keys()返回鍵的排列和鏈接一個Array.prototype.map()方法achive相同返回對象的值所需的陣列:

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

6

Lodash是一個非常棒的工具來簡化您的JavaScript代碼。您可以使用_.values

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

我正在開發一個AWS Lambda,現在我標記了相同的問題,我解決了這個簡單的線(假設a是對象) const values = Object.keys(a).map(k => a[k]);