TypeError:Object.entries 不是函数

     2023-02-22     33

关键词:

【中文标题】TypeError:Object.entries 不是函数【英文标题】:TypeError: Object.entries is not a function 【发布时间】:2017-10-07 02:37:29 【问题描述】:

为什么我在尝试运行 Node.js/Express 服务器时不断收到此错误消息?

这是新版 ES7 的一部分吗?我需要什么才能使用这些新功能运行应用程序?

【问题讨论】:

你有哪个版本的节点? Node v7 显然:node.green/… ...或任何广泛可用的 polyfills。不,它不是 ES7 的一部分。 Object.entries 是 ECMAScript 2018 的一部分,我猜它是 ed 9(当前版本是 ECMA-262 ed 7 或 ECMAScript 2016,下一个是 ECMAScript 2017)。不过最近的版本好像去掉了版本号,最新的草稿就是ECMAScript 2018 没有“较新的 ES7”这样的东西。 ES7 于去年发布。您所问的通常称为“ES next”(下一个,即将推出的功能)。 @RobG:根据github.com/tc39/proposals/blob/master/finished-proposals.md,它应该包含在今年的版本中。 【参考方案1】:

在 mdn 文档上,Object.entries 上有一个明确的教程,并且在同一页面中的部分 PolyFill 上描述了如果 Object.entries 不支持该怎么办。

要在本机不支持的旧环境中添加兼容的 Object.entries 支持,您可以在 tc39/proposal-object-values-entries 中找到 Object.entries 的演示实现(如果您不需要任何支持对于 IE),es-shims/Object.entries 存储库中的一个 polyfill,或者您可以使用下面列出的简单、可部署的 polyfill。

if (!Object.entries)
   Object.entries = function( obj )
      var ownProps = Object.keys( obj ),
         i = ownProps.length,
         resArray = new Array(i); // preallocate the Array

      while (i--)
         resArray[i] = [ownProps[i], obj[ownProps[i]]];
      return resArray;
   ;

【讨论】:

这个问题是条目根据插入顺序对数组进行排序,而键有不同的排序方式。【参考方案2】:

根据Object静态方法下的http://kangax.github.io/compat-table/es2016plus/,看来你需要启用和谐标志

所以像这样运行节点

node --harmony script.js

【讨论】:

“Harmony”不应该是 ECMAScript 2015 aka ECMA-262 ed 6 吗?还是现在只是指最新的(可能仍处于草案中)功能? 鉴于 Object.entries 似乎是 ES2017 功能,和谐标志现在代表几乎完整但不被认为稳定的功能。见这里:nodejs.org/en/docs/es6 也许他们应该考虑将标志设置为 --latest 或类似的东西。也少了一个要输入的字符。 ;-)【参考方案3】:

您可以使用babel-polyfill 快速解决问题

npm install babel-polyfill

import 'babel-polyfill';

【讨论】:

这对我不起作用,我完全按照文档进行操作。在发布之前,您应该确保您的答案确实有效。【参考方案4】:

万一这对其他人有帮助......

更新您的 Node.js 版本。我正在运行节点 6.x,在我更新到节点 8.x+ 后这个问题自行解决了

【讨论】:

我的 SublimeLinter 在运行时出现此错误,我通过更新节点(有 6.2.2)并确保 SublimeLinter 的设置指向新版本(10.15.1)来解决它。 是的,老版本的节点肯定是这个功能无法识别的问题【参考方案5】:

首先安装 react-app-polyfill:

npm install react-app-polyfill

然后在导入 React 之前导入到 index.jsx 的顶部:

import 'react-app-polyfill/stable';

【讨论】:

【参考方案6】:

就我而言,当我从节点 11.15.0 切换到 lts/erbium / 12.18.3 时,它自行解决了。

【讨论】:

【参考方案7】:

代替

const myObj = a: 1, b: 2

myObj.entries()

Object.entries(myObj)

【讨论】:

Babel 对 Object.entries 的支持

】Babel对Object.entries的支持【英文标题】:BabelsupportforObject.entries【发布时间】:2016-05-0712:29:48【问题描述】:我正在查看stage3proposalofObject.values/Object.entries,我真的很想在我当前的JavaScript项目中使用它。但是,我不知道是否有任... 查看详情

object.keys(),object.values(),object.entries()(代码片段)

Object.keys(),Object.values(),Object.entries()Object.keys()ES5引入了Object.keys方法,返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名。varobj=foo:‘bar‘,baz:42;Object.keys(obj)//["foo","baz"] ES2017 引入... 查看详情

React.js 迭代对象而不是 Object.entries 的正确方法

】React.js迭代对象而不是Object.entries的正确方法【英文标题】:React.jsrightwaytoiterateoverobjectinsteadofObject.entries【发布时间】:2017-04-1810:43:12【问题描述】:我不喜欢使用Object.entries(object).map((key,i),因为我发现这是ECMAScript7的实验性... 查看详情

[es2017]iterateoverpropertiesofanobjectwithes2017object.entries()

The Object.entries() functionisanadditiontotheECMAscriptscpecinEs2017.Thisallowsustoiteratethroughthepropertiesofanobjectandreadtheentriesaskeysandobjects. constobj={foo:‘bar‘,baz:42};c 查看详情

Object.entries() 和 Object.values() 在 WebStorm/PhpStorm 中没有被键入为数组

】Object.entries()和Object.values()在WebStorm/PhpStorm中没有被键入为数组【英文标题】:Object.entries()andObject.values()arenottypedasarraysinWebStorm/PhpStorm【发布时间】:2017-06-1810:38:48【问题描述】:我有一个带有ES6目标的TypeScript项目,它使用core-... 查看详情

object.keys(),object.values(),object.entries()(代码片段)

1、(1)Object.keys()//返回键数组返回数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名。eg:varobj=a:1,b:‘gy‘Object.keys(obj)//[‘a‘,‘b‘](2)Object.values()//返回值数组返回数组,成员是参数对象自身的(... 查看详情

TypeScript 中的 ES7 Object.entries() 不起作用

】TypeScript中的ES7Object.entries()不起作用【英文标题】:ES7Object.entries()inTypeScriptnotworking【发布时间】:2017-02-0601:48:11【问题描述】:我在使用TypeScript转换ES7代码时遇到问题。这段代码:constsizeByColor=red:100,green:500,;for(const[color,size]o... 查看详情

如何使 Object.entries 在 TypeScript 中可用? [复制]

】如何使Object.entries在TypeScript中可用?[复制]【英文标题】:HowdoImakeObject.entriesavailableinTypeScript?[duplicate]【发布时间】:2017-07-1314:19:16【问题描述】:在我的angular-cli-built应用程序(当前使用TypeScript2.0.3)中,我希望能够使用这... 查看详情

打字稿转换 Object.entries 将派生字符串数组减少为文字类型

】打字稿转换Object.entries将派生字符串数组减少为文字类型【英文标题】:typescriptconvertingObject.entriesreducedderivedstringarraytoliteraltypes【发布时间】:2022-01-0316:54:46【问题描述】:constprogram=morgning:[\'breakfast\',\'mingle\'],evning:[\'mingle\',\... 查看详情

es8新特性(代码片段)

Object.values/Object.entries  Object.values和 Object.entries是在ES2017规格中,它和Object.keys类似,返回数组类型,其序号和Object.keys序号对应。类似python中的dict.iteritems()。Object.values,Object.entries和Object.keys各自项返回是数组,相对应包括 查看详情

在 Object.entries 上运行 forEach 不会返回与 for 循环相同的内容

】在Object.entries上运行forEach不会返回与for循环相同的内容【英文标题】:RunningforEachonObject.entriesdoesnotreturnthesamethingasaforloop【发布时间】:2021-05-2012:24:50【问题描述】:我正在使用常规for循环遍历一个对象,这对我来说很好。但... 查看详情

object.fromentries()(代码片段)

Object.fromEntries()Object.fromEntries()方法是Object.entries()的逆操作,用于将一个键值对数组转为对象。Object.fromEntries([[‘foo‘,‘bar‘],[‘baz‘,42]])//foo:"bar",baz:42 该方法的主要目的,是将键值对的数据结构还原为对象,因此特别适合... 查看详情

ecmascript2017(es8)新内容(代码片段)

...序与通过手动循环对象的属性值所给出的顺序相同*/Object.entries()Object.entries(obj);//<-输出[['0':'a'],['1','b'],['2','c']]/*返回一个给定对象自身可枚举属性的键值对数组,其排列与使用for...in循环遍历... 查看详情

es8对object快速遍历的方法(代码片段)

...ade))console.log(Object.values(grade).filter(item=>item>96))//object.entries:把对象变成可遍历的对象letresult=[]for(let[k,v]ofObject.entries(grade))console.log(k,v)if(k===‘lilei‘)result.push(k)console.log(result) 查看详情

对象的扩展-03

...属性Object.values()    // 对象自身可遍历属性Object.entries()      // 对象自身可遍历属性Object.getOwnPropertyDescriptors  //返回指定对象所有自身属性(非继承属性)的描述对象 查看详情

object.fromentries(代码片段)

//数组转换成对象constarr=[[‘foo‘,1],[‘bar‘,2]]constobj=Object.fromEntries(arr)console.log(obj.bar)//找出key的长度为3的值constobj=abc:1,def:2,ghewe:3letres=Object.fromEntries(Object.entries(obj).filter(([key,val])=>key.length===3))console.log(res)  查看详情

如何循环遍历数组

...家的inventory。我尝试使用Object.values()、Object.map()和Object.entries()。items的名称已经用Object.keys(inventory)解决了,但 查看详情

javascript对象(代码片段)

JS对象1. JS对象JS对象是什么?JS对象数据类型JS对象的访问2. JS对象的声明方法3. JS对象中的this4. 一些常用的操作方法4.1)Object.keys(obj),Object.getOwnPropertyNames(obj)4.2)Object.values(obj)4.3)Object.entries(obj),Object.fromEntries()4.4) 查看详情