2016-11-04 3 views
33

Object.values() Object.values ​​() auf Server-Seite verwenden Fehler folgende:Wie erhielt in Node.js

TypeError: Object.values is not a function.

Von this Frage auf Stackoverflow - ich sehe, dass Object.values() nicht in allen Browsern unterstützt wird.

Aber ich bin mit der Funktion in Node.js auf Server-Seite - Wie kann ich Object.values() in Node.js es scheint so intuitiv wie Object.keys()?

+0

"Aber ich benutze es auf Server-Side-Code" - mit Node.js? – evolutionxbox

+0

Frage war zu finden, wie Object.values ​​() in node.js wie im Titel erwähnt zu verwenden.Ich habe die Frage bearbeitet, um sie auch im Text explizit zu machen. Warum ist der Downvote nicht das Duplikat? – npr

+0

Ich habe nicht downvote. Aufgrund der unspezifischen Natur dachte ich, es sei ein Duplikat, das jetzt zurückgezogen wurde. – evolutionxbox

Antwort

43

Object.values ist eine neue Funktion in ES2017. Es ist sehr blutig. Node.js hat volle support for it von Version 7.0.

6.8.1 unterstützt es, aber es gilt als instabil und ist hinter dem --harmony Flag verriegelt.

Sie können entweder:

  • Upgrade auf die neueste Node.js LTS und verwenden --harmony
  • Upgrade auf die neueste Node.js Aktuelle
  • Verwenden Sie ein polyfill
+0

das ist cool - danke – npr

+2

Hier ist eine anständige Polyfill: https://www.npmjs.com/package/object.values ​​ –

+0

Danke, konnte meine Heroku App mit dieser Antwort beheben. – Antoine

14

Object.values() ist im Status "Entwurf" für die Version ECMAScript2017 und hier die Spezifikation: ECMAScript 2017 Draft (ECMA-262) The definition of 'Object.values' in that specification..

Die Methode Object.values() gibt ein Array der eigenen aufzählbaren Eigenschaftswerte eines bestimmten Objekts in der gleichen Reihenfolge wie die for ... in-Schleife zurück (der Unterschied besteht darin, dass eine For-In-Schleife Eigenschaften in der Prototypkette aufzählt) auch).

Ohne Änderung nichts in Ihrem NodeJS Enviroment Sie das gleiche mit Hilfe Object.keys() achive können, die ein Array von Schlüsseln zurückgibt und eine Array.prototype.map() Methode Verkettungs das gewünschte Array der Objektwerte zurückzusetzen:

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 ist ein ziemlich tolles Werkzeug, um Ihren JavaScript-Code zu vereinfachen.

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

ich bin ein Entwicklungs AWS Lambda und jetzt habe ich über das gleiche Problem gestempelt und ich löste es mit dieser einfachen Zeile (vorausgesetzt, dass das Objekt ist) const values = Object.keys(a).map(k => a[k]);

Verwandte Themen