Babel support for Object.entries

匿名 (未验证) 提交于 2019-12-03 01:23:02

问题:

I'm looking at the stage 3 proposal of Object.values/Object.entries and I'd really like to use it in my current JavaScript project.

However, I can't figure out whether there's any Babel preset which supports it. Since the GitHub repository linked above says it's a stage 3 proposal, I assumed it would be part of babel-preset-stage-3, but it seems not.

Is there any Babel preset (or even plugin?) that lets me use Object.entries today?

回答1:

Using babel, installing

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

gives support for Object.values/Object.entries as well as other ES2017 functionality.

As per recommendation by the modules, configure .babelrc with the following:

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


回答2:

What I did was install core-js and then just call this at the top of my file:

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

This made Object.entries available. Credits to @FelixKling.



回答3:

I've created these methods myself like this:

    Object.values = x =>         Object.keys(x).reduce((y, z) =>             y.push(x[z]) && y, []);      Object.entries = x =>         Object.keys(x).reduce((y, z) =>             y.push([z, x[z]]) && y, []); 

These return arrays that represent the expected behaviour on JSON-like objects.

Usage:

Object.values = x =>   Object.keys(x).reduce((y, z) =>     y.push(x[z]) && y, []);  Object.entries = x =>   Object.keys(x).reduce((y, z) =>     y.push([z, x[z]]) && y, []);   const a = {   key: "value",   bool: true,   num: 123 }  console.log(   Object.values(a) )  console.log(   Object.entries(a) )


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!