我们得到 object.entries(),它转换一个object → array。但是,如果您想做相反的事情怎么办?不用再想了! 使用 Object.fromEntries() 来array → object 。

const keyValuePair = [  ['cow', ''],  ['pig', ''],];Object.fromEntries(keyValuePair);// { cow: '', pig: '' }

Object.fromEntries

我们先指出对象的解剖方法,对象是有一个键和一个值的东西。

const object = {  key: 'value',};

如果我们想将某物转换为对象,我们需要传递具有这两个要求的东西:key 和 value。

  • 具有嵌套键值对的数组
  • Map对象

用Object.fromEntries将数组转为对象

这是带有键值对的嵌套数组

const nestedArray = [  ['key 1', 'value 1'],  ['key 2', 'value 2'],];

当我们将 Object.fromEntries 应用于它时,我们可以从中获取对象。

Object.fromEntries(nestedArray);// { key 1: "value 1", key 2: "value 2"}

用Object.fromEntries将Map转为对象

JavaScript ES6为我们带来了一个名为map的新对象,它与对象非常相似。

让我们创建新的Map对象

// 使用构造函数const map = new Map([  ['key 1', 'value 1'],  ['key 2', 'value 2'],]);// 或者我们可以使用实例方法,"set"const map = new Map();map.set('key 1', 'value 1');map.set('key 2', 'value 2');// 结果// Map(2) {"key 1" => "value 1", "key 2" => "value 2"}

现在,我们使用 Object.fromEntries 将Map转换为对象

Object.fromEntries(map);// { key 1: "value 1", key 2: "value 2"}

Object.fromEntries与其他类型的类型错误

当你试图将其他数据类型传递到 Object.fromEntries 时,请小心,所有这些都会抛出一个错误

未捕获的类型错误(Uncaught TypeError)

确保只传递键值对

Object.fromEntries vs Object.entries

Object.fromEntriesObject.entries 的效果相反。所以 Object. entries 将转换我们的数组并返回一个新的嵌套的键值对数组。而 Object.fromEntries 将把这个数组转回一个对象。

const object = { key1: 'value1', key2: 'value2' };const array = Object.entries(object);// [ ["key1", "value1"], ["key2", "value2"] ]Object.fromEntries(array);// { key1: 'value1', key2: 'value2' }

Object到Object的转换

如果你阅读了原始的TC39提案,这就是引入此新方法的原因。随着 Object.entries 的引入,没有一种简单的方法可以将结果转换回对象。

通常,当我们选择使用 Object.entries 时,是因为它使我们可以访问许多漂亮的数组方法,例如 filter。但是在完成转换之后,我们有点被该数组所困扰。

const food = { meat: '', broccoli: '', carrot: '' };//  Stuck in Array landconst vegetarian = Object.entries(food).filter(  ([key, value]) => key !== 'meat',);// [ ["broccoli", ""], ["carrot", ""] ]

我们可以利用所有这些有用的数组方法,但仍然可以找回我们的对象,最后,从对象到对象的转换 。

const food = { meat: '', broccoli: '', carrot: '' };//  Yay, still in Object landconst vegetarian = Object.fromEntries(  Object.entries(food).filter(([key, value]) => key !== 'meat'),);// { broccoli: '', carrot: '' }

浏览器支持

除了Internet Explorer,大多数主流浏览器都支持此方法 。


如果对你有所启发和帮助,可以点个关注、收藏、转发,也可以留言讨论,这是对作者的最大鼓励。

作者简介:Web前端工程师,全栈开发工程师、持续学习者。

私信回复大礼包送某网精品视频课程网盘资料,准能为你节省不少钱!

linq结果转换object_你知道Object.entries(),但你还知道有Object.fromEntries()吗?相关推荐

  1. linq结果转换object_【JavaScript 教程】标准库—Object 对象

    作者 | 阮一峰 1.概述 JavaScript 原生提供Object对象(注意起首的O是大写),本章介绍该对象原生的各种方法. JavaScript 的所有其他对象都继承自Object对象,即那些对 ...

  2. Object.entries()

    Object.entries() 方法返回一个给定对象自身可枚举属性的键值对数组. 其排列与使用 for...in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环还会枚举原型链中的属性) ...

  3. Object.entries() Object.values()

    prosoal: object values/entries Object.entries() MDN: Object.entries 此方法签名如下: Object.entries(value : ...

  4. Object.entries()方法的使用和实现

    1.定义 Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for...in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环还会枚举原型链中的 ...

  5. Object.keys()、Object.values()、Object.entries()的用法

    一.Object.keys(obj) 参数:要返回其枚举自身属性的对象 返回值:一个表示给定对象的所有可枚举属性的字符串数组 处理对象,返回可枚举的属性数组 let person = {name:&q ...

  6. ES6~ES12——Array Includes、Object values、Object entries、Object fromEntries、flat、flatMap、空值合并运算符、可选链等

    一.ES7 - Array Includes 在ES7之前,如果我们想判断一个数组中是否包含某个元素,需要通过 indexOf 获取结果,并且判断是否为 -1. 在ES7中,我们可以通过include ...

  7. JavaScript深入理解对象方法——Object.entries()

    Object.entries() Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for...in 循环遍历该对象时返回的顺序一致(区别在于 for-in ...

  8. ES6语法~解构赋值、箭头函数、class类继承及属性方法、map、set、symbol、rest、new.target、 Object.entries......

    2015年6月17日 ECMAScript 6发布正式版本 前面介绍基本语法,  后面为class用法及属性方法.set.symbol.rest等语法. 一.基本语法:  1.         定义变 ...

  9. Object.entries(obj)

    var obj = {a:1, b:2, c:3 } Object.entries(obj) // [['a', 1],['b',2],['c',3]] // 对象自身可枚举属性的键值对数组 复制代码 ...

最新文章

  1. 收藏 | 深度学习损失函数大全
  2. VirtualBox中linux和windows建立桥接
  3. for循环中let,var 的经典面试题:for循环中 console.log(i)详解
  4. 1071 - Specified key was too long; max key length is 767 bytes
  5. websocket创建失败_ie11 websocket连接建立时报SecurityError问题
  6. JavaScript异步编程的四种方法(转)
  7. mysql sumif优化,sumif函数的使用方法
  8. android 微信 语音转文字,微信语音转文字功能
  9. 先测试再开发?TDD测试驱动开发了解一下?
  10. 数据库设计说明文档自动生成(支持Mysql、Oracle和Postgres)
  11. android 模板引擎,template.js模板引擎
  12. 树梅派应用27:通过USB蓝牙适配器连接BLE设备
  13. Win10耳机插上没反应,外放正常怎么解决?
  14. Android开发5年,字节腾讯惨被血虐,我真的不适合这行吗?
  15. OBS 基础 16 如何在CMake中添加新的lib库、头文件等
  16. SSM和Springboot框架比较的优缺点
  17. 如何在word中粘贴美观工整的代码段(planetB/notepad++)
  18. ROS工业机器人和工业自动化竞赛ARIAC 2021即将启动
  19. eMule电驴服务器常见问题及解答
  20. C++多态——静态多态与动态多态

热门文章

  1. JAVA中和、||和|的区别?
  2. 学习Spring Boot:(二十七)Spring Boot 2.0 中使用 Actuator
  3. js 里面令人头疼的 this
  4. 计算机mips是什么,在计算机术语中,什么叫MIPS
  5. c语言中foreach的用法,详解JavaScript中的forEach()方法的使用
  6. cam350怎么看顶层_厉害的人是怎么分析问题的?(实操干货)
  7. ES6 深拷贝_你别自以为是:ES6误区 之 Object.assign()、const
  8. java jpeg压缩解码_JPEG图像压缩原理简介
  9. aix查看oracle数据库端口号,通过netstat+rmsock查找AIX端口对应进程
  10. (SPFA+最短路变形+回路对起点的影响)Arbitrage