关键词:
【中文标题】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) 查看详情