whats what online node for ecmascript babelrc javascript babeljs ecmascript-next

javascript - what - Soporte de Babel para Object.entries



what is babel for (3)

Estoy viendo la propuesta de la etapa 3 de Object.values ​​/ Object.entries y realmente me gustaría usarla en mi proyecto de JavaScript actual.

Sin embargo, no puedo averiguar si hay algún preset de Babel que lo admita. Dado que el repositorio de GitHub vinculado anteriormente dice que es una propuesta de la etapa 3, asumí que sería parte de babel-preset-stage-3, pero parece que no.

¿Hay algún preset de Babel (o incluso un plugin) que me permita usar Object.entries hoy?


Lo que hice fue instalar core-js y luego llamar esto en la parte superior de mi archivo:

require(''core-js/fn/object/entries'');

Esto hizo que Object.entries disponible Créditos a @FelixKling.


Usando babel , instalando

  1. babel-preset-es2017
  2. babel-plugin-transform-runtime

proporciona soporte para Object.values / Object.entries , así como otras funciones de ES2017 .

Según la recomendación de los módulos, configure .babelrc con lo siguiente:

{ "plugins": ["transform-runtime"], "presets": ["es2017"] }


Actualización :

Como se señaló en los comentarios, puede mejorar el rendimiento utilizando la función de map lugar de reduce .

Tenga en cuenta que el código distingue entre mayúsculas y minúsculas ( object != Object ).

// Object.values var objectToValuesPolyfill = function(object) { return Object .keys(object) .map( function(key) { return object[key]; } ); } Object.values = Object.values || objectToValuesPolyfill; // Object.entries var objectToEntriesPolyfill = function(object) { return Object .keys(object) .map( function(key) { return [key, object[key]]; } ); } Object.entries = Object.entries || objectToEntriesPolyfill;

Uso:

// es6 Object.values = Object.values || (x => Object.keys(x).map(k => x[k])); Object.entries = Object.entries || (x => Object.keys(x).map(k => [k, x[k]])); // es5 Object.values = Object.values || function(x){ return Object.keys(x).map(function(k){ return x[k]; }) }; Object.entries = Object.values || function(x){ return Object.keys(x).map(function(k){ return [k, x[k]]; }) }; const a = { key: "value", bool: true, num: 123 } console.log( Object.values(a) ) console.log( Object.entries(a) )