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

670b52c4e542bfdfd23b36e8853650f8.png

我们得到 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)

3a2d5da2a39f9e25a3d86609ea05f6ad.png

确保只传递键值对

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,大多数主流浏览器都支持此方法 。

4f45798f9c87a360c2f276ee5820cefa.png

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567617.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言中数组越界访问造成死循环现象

大家请看这样一段代码&#xff08;工具&#xff1a;VC6.0&#xff09;&#xff1a; #include <stdio.h> int main(int argc, char *argv[]) { int i; int arr[10];/* 这里注意循环变量i与数组arr的定义顺序 */ for(i 0; i < 10; i)/* 这里越界了 */ …

java 同步锁_Java多线程:synchronized同步锁的使用和实现原理

作用和用法在多线程对共享资源进行并发访问方面&#xff0c;JDK提供了synchronized关键字来进行线程同步&#xff0c;实现多线程并发访问的线程安全。synchronized的作用主要体现在三个方面&#xff1a;(1)确保线程互斥地访问同步代码&#xff1b;(2)保证共享变量的线程可见性&…

Apache shutdown unexpectedly启动错误解决方法

xampp启动时显示的错误为&#xff1a; 9:52:41 [Apache] Attempting to start Apache app... 9:52:41 [Apache] Status change detected: running 9:52:42 [Apache] Status change detected: stopped 9:52:42 [Apache] Error: Apache shutdown unexpectedly. 9:52:42 …

java基础代码实例_基础篇:详解JAVA对象实例化过程

1 对象的实例化过程对象的实例化过程是分成两部分&#xff1a;类的加载初始化&#xff0c;对象的初始化要创建类的对象实例需要先加载并初始化该类&#xff0c;main方法所在的类需要先加载和初始化类初始化就是执行方法&#xff0c;对象实例化是执行方法一个子类要初始化需要先…

搭建webUI自动化及问题解决:Message: ‘chromedriver‘ executable needs to be in PATH.解决办法

搭建webUI自动化环境 1、conda install selenium即可。 若出现&#xff1a;Message: chromedriver executable needs to be in PATH.Please see https://sites.google.com/a/chromium.org/chromedriver/home。 报错原因&#xff1a;没有配置chrome浏览器的chromedriver 解决…

python内置输入函数_python内置函数 print()

英文文档&#xff1a;print(*objects, sep’ ‘, end’\n’, filesys.stdout, flushFalse)Print objects to the text stream file, separated by sep and followed by end. sep, end, file and flush, if present, must be given as keyword arguments.All non-keyword argume…

webUI自动化一元素定位

实现功能&#xff1a;自动在百度输入框输入test&#xff0c;并进行搜索 from selenium import webdriver from time import sleepdriver webdriver.Chrome() driver.get("http://www.baidu.com")input_text driver.find_element_by_id("kw") print(&quo…

python propresql mysql_python数据库操作mysql:pymysql、sqlalchemy常见用法详解

本文实例讲述了python数据库操作mysql&#xff1a;pymysql、sqlalchemy常见用法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;相关内容&#xff1a;使用pymysql直接操作mysql创建表查看表修改表删除表插入数据查看数据修改数据删除数据使用sqlmary操作mysql创建表查…

webUI自动化二-获取元素信息相关方法

from selenium import webdriver from time import sleepdriver webdriver.Chrome() driver.get("D:\QQFile\注册A.html")# 1获取用户输入框的大小 input_text driver.find_element_by_id("userA") print("元素大小为&#xff1a;",input_text…

python环境变量的配置 alias_配置别名

有没有经常敲错命令&#xff1f;比如git status&#xff1f;status这个单词真心不好记。如果敲git st就表示git status那就简单多了&#xff0c;当然这种偷懒的办法我们是极力赞成的。我们只需要敲一行命令&#xff0c;告诉Git&#xff0c;以后st就表示status&#xff1a;$ git…

C语言-字符串处理函数strcpy

strcpy 原型&#xff1a;strcpy(char destination[], const char source[]); 功能&#xff1a;将字符串source拷贝到字符串destination中。此处将source中的字符串结束标志符‘\0’也一同复制。所以在输出时&#xff0c;切不可以用‘\0’&#xff0c;puts&#xff0c;printf输…

pythonjavascript一起开发_Python开发【第十一篇】:JavaScript

JavaScript是一门编程语言&#xff0c;浏览器内置了JavaScript语言的解释器&#xff0c;所以在浏览器上按照JavaScript语言的规则编写相应代码之&#xff0c;浏览器可以解释并做出相应的处理。一、如何编写1、JavaScript代码存在形式Js代码内容2、JavaScript代码存放位置HTML的…

C语言-字符串处理函数strcat

strccat-字符串拼接函数 char*strcat(char* strDestination, const char* strSource); 参数说明&#xff1a; strDestination&#xff1a;目的字符串&#xff1b;strSource&#xff1a;源字符串。 strcat() 函数把 strSource 所指向的字符串追加到 strDestination 所指向的字…

js数组截取前5个_我不能没有的5个Vue.js库

1.Click Off to Close有的时候&#xff0c;我们需要在用户点击元素之外的时候触发一个事件。最常见的用例是当你想通过点击关闭一个下拉框或对话框时。这是一个必不可少的包&#xff0c;几乎在我构建的每个应用中都会用到。首选&#xff1a;vue-clickawayhttps://github.com/si…

this.$router.push如何刷新页面_小程序丨微信小程序如何实现页面下拉刷新

微信小程序蕴含着众多功能&#xff0c;本期将简单介绍实现页面下拉刷新的方法&#xff0c;通过阅读本文&#xff0c;读者们可以自行动手操作&#xff0c;在实践中认识微信小程序。首先&#xff0c;我们需在json配置中写出以下配置&#xff1a;"enablePullDownRefresh"…

C语言-字符串处理函数strcmp

strcmp-字符串比较函数 原型&#xff1a;int strcmp(const char firststring[], const char secondstring); 功能&#xff1a;比较两个字符串firststring和secondstring 如果等于 返回值为0 如果字符串1大于字符串2 函数值返回为1 如果字符串1小于字符串2 函数值返回为-1 …

导出excel数字前面的0消失_Excel操作中常见的3大坑你遇到过吗?遇到应该这么解决...

在excel中的我们获取数据的方式一是自己录入数据&#xff0c;二是通过网络或其他的途径导出的源数据&#xff0c;不管哪种的方式&#xff0c;对我们处理数据的来说都十分重要&#xff0c;这里我们需要注意这些点并成功跳过这些不按原理只按自己习惯的坑。今天要聊的坑有3个&…

matplot绘制图形入门

一、折线图 """ File: 折线图.py Author: chde_wang Date: 2021-05-23 22&#xff1a;26&#xff1a;04 Description: """ # 绘制折线图 import numpy as np import matplotlib.pyplot as plt x np.linspace(0, 2 * np.pi, 100) y1, y2 np.si…

kafka使用_Kafka介绍与使用

最近在研究kafka&#xff0c;觉得需要输出点东西才能更好的吸收&#xff0c;遂总结与大家分享&#xff0c;话不多说。一、先上思维导图&#xff1a;二、再上kafka整体架构图&#xff1a;2.1、Producer&#xff1a;消息生产者&#xff0c;就是向kafka broker发消息的客户端。2.2…

int 为什么是2147483647_int范围为啥是-2147483648到2147483647

单位换算 1 Byte(B) 8 bit 1 Kilo Byte(KB) 1024B 1 Mega Byte(MB) 1024 KB 1 Giga Byte (GB) 1024 MB 1 Tera Byte(TB) 1024 GB 1 Peta Byte(PB) 1024 TB 从上可以了解计算机最小的存储单位是bit&#xff0c;即一位二进制数(0 或 1)&#xff0c;8个二进制位为一个字…