linq结果转换object_你知道Object.entries(),但你还知道有Object.fromEntries()吗?
我们得到 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.fromEntries 与 Object.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()吗?相关推荐
- linq结果转换object_【JavaScript 教程】标准库—Object 对象
作者 | 阮一峰 1.概述 JavaScript 原生提供Object对象(注意起首的O是大写),本章介绍该对象原生的各种方法. JavaScript 的所有其他对象都继承自Object对象,即那些对 ...
- Object.entries()
Object.entries() 方法返回一个给定对象自身可枚举属性的键值对数组. 其排列与使用 for...in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环还会枚举原型链中的属性) ...
- Object.entries() Object.values()
prosoal: object values/entries Object.entries() MDN: Object.entries 此方法签名如下: Object.entries(value : ...
- Object.entries()方法的使用和实现
1.定义 Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for...in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环还会枚举原型链中的 ...
- Object.keys()、Object.values()、Object.entries()的用法
一.Object.keys(obj) 参数:要返回其枚举自身属性的对象 返回值:一个表示给定对象的所有可枚举属性的字符串数组 处理对象,返回可枚举的属性数组 let person = {name:&q ...
- ES6~ES12——Array Includes、Object values、Object entries、Object fromEntries、flat、flatMap、空值合并运算符、可选链等
一.ES7 - Array Includes 在ES7之前,如果我们想判断一个数组中是否包含某个元素,需要通过 indexOf 获取结果,并且判断是否为 -1. 在ES7中,我们可以通过include ...
- JavaScript深入理解对象方法——Object.entries()
Object.entries() Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for...in 循环遍历该对象时返回的顺序一致(区别在于 for-in ...
- ES6语法~解构赋值、箭头函数、class类继承及属性方法、map、set、symbol、rest、new.target、 Object.entries......
2015年6月17日 ECMAScript 6发布正式版本 前面介绍基本语法, 后面为class用法及属性方法.set.symbol.rest等语法. 一.基本语法: 1. 定义变 ...
- Object.entries(obj)
var obj = {a:1, b:2, c:3 } Object.entries(obj) // [['a', 1],['b',2],['c',3]] // 对象自身可枚举属性的键值对数组 复制代码 ...
最新文章
- 收藏 | 深度学习损失函数大全
- VirtualBox中linux和windows建立桥接
- for循环中let,var 的经典面试题:for循环中 console.log(i)详解
- 1071 - Specified key was too long; max key length is 767 bytes
- websocket创建失败_ie11 websocket连接建立时报SecurityError问题
- JavaScript异步编程的四种方法(转)
- mysql sumif优化,sumif函数的使用方法
- android 微信 语音转文字,微信语音转文字功能
- 先测试再开发?TDD测试驱动开发了解一下?
- 数据库设计说明文档自动生成(支持Mysql、Oracle和Postgres)
- android 模板引擎,template.js模板引擎
- 树梅派应用27:通过USB蓝牙适配器连接BLE设备
- Win10耳机插上没反应,外放正常怎么解决?
- Android开发5年,字节腾讯惨被血虐,我真的不适合这行吗?
- OBS 基础 16 如何在CMake中添加新的lib库、头文件等
- SSM和Springboot框架比较的优缺点
- 如何在word中粘贴美观工整的代码段(planetB/notepad++)
- ROS工业机器人和工业自动化竞赛ARIAC 2021即将启动
- eMule电驴服务器常见问题及解答
- C++多态——静态多态与动态多态
热门文章
- JAVA中和、||和|的区别?
- 学习Spring Boot:(二十七)Spring Boot 2.0 中使用 Actuator
- js 里面令人头疼的 this
- 计算机mips是什么,在计算机术语中,什么叫MIPS
- c语言中foreach的用法,详解JavaScript中的forEach()方法的使用
- cam350怎么看顶层_厉害的人是怎么分析问题的?(实操干货)
- ES6 深拷贝_你别自以为是:ES6误区 之 Object.assign()、const
- java jpeg压缩解码_JPEG图像压缩原理简介
- aix查看oracle数据库端口号,通过netstat+rmsock查找AIX端口对应进程
- (SPFA+最短路变形+回路对起点的影响)Arbitrage