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