57 votes

Comment utiliser Object.values () côté serveur dans Node.js

Object.values() reçu d'erreur suivant:

TypeError: Object.les valeurs n'est pas une fonction.

À partir de cette question sur stackoverflow - je vois qu' Object.values() n'est pas pris en charge dans tous les navigateurs.

Mais je suis à l'aide de la fonction dans Node.js sur le côté serveur - Comment puis-je utiliser Object.values() dans Node.js il semble donc intuitive comme Object.keys()?

72voto

Quentin Points 325526

Object.values est une nouvelle fonctionnalité dans ES2017. Il est très à la pointe. Node.js a plein soutien à partir de la version 7.0.

6.8.1 le soutient, mais il est considéré comme instable et qu'il est enfermé derrière l' --harmony drapeau.

Vous pouvez soit:

  • Mise à niveau vers la dernière Node.js LTS et utiliser --harmony
  • Mise à niveau vers la dernière Node.js Actuel
  • Utiliser un polyfill

21voto

Yosvel Quintero Points 10172

Objet.les valeurs de() est en état de "Projet" pour la version ECMAScript2017 et voici les spécifications: ECMAScript 2017 Projet (ECMA-262) La définition de l'Objet.les valeurs' dans cette spécification..

L' Object.values() méthode renvoie un tableau d'un objet énumérable les valeurs de propriété, dans le même ordre que celui fourni par une...en boucle (la différence étant qu'un pour-en boucle énumère les propriétés dans la chaîne de prototype).

Sans ne rien changer à votre NodeJS environnement, vous pouvez réaliser la même chose en utilisant l'Objet.les touches() qui retourne un tableau de clés et le chaînage d'un Tableau.le prototype.map() méthode pour retourner le tableau désiré de l'Objet de valeurs:

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

11voto

sakovias Points 740

Lodash est un outil génial pour simplifier votre code JavaScript. Vous pouvez utiliser _.values :

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

11voto

thopaw Points 1292

Je développe actuellement un AWS Lambda et je suis maintenant tombé sur le même problème et je l'ai résolu par cette simple ligne (en supposant que c'est l'objet) const values = Object.keys(a).map(k => a[k]);

4voto

Phong Nguyen Points 41

3 alternative pour faire le tour si vous ne voulez pas mettre à niveau le noeud

  1. les clés de mappage comme dans cette réponse
  2. en utilisant lodash comme autre réponse de @sakovias
  3. en utilisant ce paquetage object.values npm

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X