javascript node.js

javascript - Cómo usar Object.values() en el lado del servidor en Node.js



(7)

3 alternativas para evitar si no desea actualizar el nodo

  1. claves de mapeo como en esta respuesta
  2. usando lodash como otra respuesta de @sakovias
  3. utilizando este npmjs.com/package/object.values

Object.values() recibió el siguiente error:

TypeError: Object.values ​​no es una función.

A partir de this pregunta sobre stackoverflow, veo que Object.values() no es compatible con todos los navegadores.

Pero estoy usando la función en Node.js en el lado del servidor: ¿cómo puedo usar Object.values() en Node.js, parece tan intuitivo como Object.keys() ?



Aquí hay un polyfill que se activa solo cuando aún no está definido:

const objectToValuesPolyfill = (object) => { return Object.keys(object).map(key => object[key]); }; Object.values = Object.values || objectToValuesPolyfill;


Estoy desarrollando un AWS Lambda y ahora me topé con el mismo problema y lo resolví con esta simple línea (suponiendo que a es el objeto) const values = Object.keys(a).map(k => a[k]);


Object.values() está en estado "Borrador" para la versión ECMAScript2017 y aquí la especificación: ES2017 .

El método Object.values() devuelve una matriz de valores de propiedad enumerables propios de un objeto dado, en el mismo orden que el proporcionado por un bucle for ... in (la diferencia es que un bucle for-in enumera propiedades en la cadena prototipo también).

Sin cambiar nada en su entorno NodeJS, puede lograr lo mismo utilizando Object.keys() que devuelve una matriz de claves y encadenando un método Array.prototype.map() para devolver la matriz deseada de los valores del Objeto:

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 es una herramienta bastante impresionante para simplificar su código JavaScript. Puede usar _.values :

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


Object.values es una nueva característica en ES2017 . Es muy sangrante. Node.js tiene soporte completo desde la versión 7.0.

6.8.1 lo admite, pero se considera inestable y está bloqueado detrás de la bandera --harmony .

Tu también puedes:

  • Actualice al último Node.js LTS y use --harmony
  • Actualice a la última versión de Node.js Current
  • Usa un polyfill