范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

厉害了,JavaScript新提案array。groupBy()

  许多开发人员喜欢 Ruby 编程语言,因为它具有丰富的标准实用程序库。例如,Ruby中的数组有大量的方法。
  不过,我们的JavaScript也在努力,在字符串和数组方面逐步丰富了它的标准库。例如,在以前的文章中,介绍新的  array.at()  方法。
  今天我们在来看新的数组组提案(目前处于第三阶段),它引入了新方法  array.groupby()  和array.groupbytomap()  。它们的 polyfills 文件可以在core-js  库中找到。
  接着,我们来看下能从中学到些什么。  1. array.groupBy()
  假设我们有一个产品列表,其中每个产品都是一个具有2个属性的对象:  name  和 category 。 const products = [   { name: "apples", category: "fruits" },   { name: "oranges", category: "fruits" },   { name: "potatoes", category: "vegetables" } ];
  在上面的示例中, products  是一个产品对象数组。
  现在,对产品列表执行一个简单的操作,将产品按类别分组。  const groupByCategory = {   "fruits": [     { name: "apples", category: "fruits" },      { name: "oranges", category: "fruits" },   ],   "vegetables": [     { name: "potatoes", category: "vegetables" }   ] };
  如何从  products  数组中得到一个类似 groupByCategory  的数组?
  通常的方法是使用 array.reduce() 来实现,如下所示: const groupByCategory = products.reduce((group, product) => {   const { category } = product;   group[category] = group[category] ?? [];   group[category].push(product);   return group; }, {}); console.log(groupByCategory); // { //   "fruits": [ //     { name: "apples", category: "fruits" },  //     { name: "oranges", category: "fruits" }, //   ], //   "vegetables": [ //     { name: "potatoes", category: "vegetables" } //   ] // }
  products.reduce((acc, product) => { ... })  将产品数组还原为一个按类别分组的产品对象。
  array.reduce() 方法有用且强大,但有时它的可读性并不是最好的。
  因为分组数据是常见的事(从SQL中召回groupby ?),数组组提案引入了两个有用的方法: array. groupBy() 和 array.groupByToMap() 。
  下面介绍如何使用  array.groupBy()  创建相同的分类分组: const groupByCategory = products.groupBy(product => {   return product.category; });  console.log(groupByCategory);   // { //   "fruits": [ //     { name: "apples", category: "fruits" },  //     { name: "oranges", category: "fruits" }, //   ], //   "vegetables": [ //     { name: "potatoes", category: "vegetables" } //   ] // }
  products.groupBy(product => {...})  返回一个对象,其中每个属性的键是类别名称,值是对应类别的产品数组。
  使用  products.groupBy()  分组比使用 product.reduce()  代码更少,更容易理解。
  array.groupBy(callback)  接受一个回调函数,该函数被调用时有3个参数:当前数组项、索引和数组本身。回调函数应该返回一个字符串:你想添加项目的组名。 const groupedObject = array.groupBy((item, index, array) => {   // ...   return groupNameAsString; }); 2. array.groupByToMap()
  有时你可能想使用  Map  而不是普通对象。 Map  的好处是它可以接受任何数据类型作为键,但普通对象只限于字符串和 symbol。
  恩,如果你想把数据分组到一个Map中,你可以使用  array.groupByToMap()  方法。
  array.groupByToMap(callback) 的工作方式与 array.groupBy(callback)  完全一样,只是它将项目分组到 Map  中,而不是一个普通的 JS 对象中。
  例如,将产品数组按类别名称分组到一个 ap 中,执行方法如下。  const groupByCategory = products.groupByToMap(product => {   return product.category; });  console.log(groupByCategory);   // Map([ //   ["fruits", [ //     { name: "apples", category: "fruits" },  //     { name: "oranges", category: "fruits" }, //   ]], //   ["vegetables", [ //     { name: "potatoes", category: "vegetables" } //   ] // ]) 3.总结
  如果你想轻松地对数组中的项进行分组(类似于SQL中的 GROUP BY ),那么欢迎使用新方法array.groupBy()  和 array.groupByToMap() 。
  两个函数都接受一个回调函数,该回调函数应返回必须插入当前项的组的键。
  array.groupBy() 将这些项分组为一个普通的JavaScript对象,而array.groupByToMap() 将它们分组为一个 Map  实例。
  如果你想马上使用这些函数,那么使用  core-js  库提供的 polyfill。
  作者:Ashish Lahoti 译者:前端小智 来源:dmitripavlutin 原文:https://dmitripavlutin.com/javascript-array-group/

2045年后永生?西媒人类大脑或将被下载到虚拟世界西班牙世界报网站2月27日发表题为我们会在2045年长生不老吗?科学将努力把我们的大脑下载到虚拟世界的文章,作者是马卡雷娜P兰萨斯。全文摘编如下永生对我们来说听起来像是科幻小说,但小米11和小米11Pro自从小米12发布后又迎来降价,来到了2000价位小米11是小米在2020年12月28日发布的旗舰产品,到现在已经发布一年多了,小米11首发价3999元,小米11Pro首发价4999元,经过几轮降价,某多多百亿补贴的小米11系列的新研究或可解释生物智能起源问题脑智能图片来源Pixabay在达尔文的里程碑式著作物种起源(OntheOriginofSpecies)中,他有一次信仰危机。他坦诚地写道眼睛具有将焦点调整到不同距离接纳不同数量的光都是误会?联想三大决定出炉,外媒认真的?文C君科讯排版C君科讯头条号原创文章,禁止抄袭,违者必究都是误会在过去的2021年,科技圈中最具有争议的企业就是联想了,自从2021年10月8日,联想撤回科创板IPO申请后,坊间质每经午时丨国家邮政局发出通知,要求开展邮政快递业安全生产大检查5家理财公司砸28。5亿自购,理财产品破净受关注每经编辑王晓波1丨国家邮政局发出通知,要求开展邮政快递业安全生产大检查每经AI快讯,据国家邮政局微信公众号4月3日消息,国家邮政局发出通知,决定于412月开展全行业安全生产大检查。下班前几分钟,搞懂这6种for循环for循环在平时开发中使用频率最高的,前后端数据交互时,常见的数据类型就是数组和对象,处理对象和数组时经常使用到for遍历,因此下班前花费几分钟彻底搞懂这5种for循环。它们分别为6599元!美的推出新款16套洗碗机一级水效三星消毒洗碗可不是一件容易的活,但是在高科技的时代,我们可以找一些帮手。宅秘注意到,最近,美的推出了新款智能洗碗机,支持一级水效和三星消毒。美的新款洗碗机美的在家居电器行业算是老牌企业了,iOS15。4。1修复耗电过快问题,网友该掉还是掉,掉的更快4月1日,苹果正式向iPhone和iPad用户推送了iOS15。4。1正式版。其中最重要的一项改进,就是修复了此前iOS15。4电池电量消耗过快的问题。此前iOS15。4正式版耗电苹果向黑客提供用户数据!iPhone还吹安全?苹果系统安全吗?相对于更加开放的安卓Windows,确实更加安全,但凡事没有绝对,比如之前iOS系统也中过飞马零日漏洞之类的招,木马也有可能被植入到苹果系统中去。但这都属于漏洞,是苹果手机虚拟Home键(小圆点)用户可以使用虚拟Home键(小圆点)快速操作手机的各项功能。比如,需要打开多任务时,正常的操作方法(iPhone7为例)是点击两下主屏幕按钮(实体home键),如果辅助触控功能开启两千元以下的骁龙870手机盘点四(摩托罗拉EdgeSPro)相比于同类型的手机,摩托罗拉所推出的机型在价格方面确实比较有优势,不管是edges。edgespro还是edgeX30,这让很多人感觉摩托罗拉就是在模仿当年的小米,想要以性价比吸引
分析特斯拉告项立刚的关键点诋毁一最高人民法院关于审理利用信息网络侵害人身权益民事纠纷案件适用法律若干问题的规定(最高人民法院审判委员会第1823次会议)第八条网络用户或者网络服务提供者采取诽谤诋毁等手段,损害公售完即止!苹果iPodTouch7代128GB版仅1599元AppleiPodtouch7代128GB仅1599元!苹果iPodTouch系列产品已经正式被列入停产名单了,现在流通的库存卖完之后彻底与这个系列告别了。iPod曾经作为苹果公司科技榜丨盘点10款汽车智能钥匙,技术布阵走到十字路口智能时代的到来,让我们的生活有了翻天覆地的变化。一切一切的设计原则都在从简,就像全面屏取代传统屏幕一样,无线充电器取代手机充电线一样,蓝牙耳机取代有线耳机一样,汽车的钥匙也在被智能日本上调5G网建设目标2023年底覆盖95人口据共同社网站报道,日本总务省近日发布了完善第5代移动通信系统光纤网络等数字基础设施建设计划。日本将截至2023年底的5G网人口覆盖率目标从过去的90上调至95。作为实现首相岸田文雄大数据报告显示一季度新能源二手车成交量逐月增长中新网上海4月2日电(记者陈静)记者2日获悉,中国二手车拍卖平台天天拍车研究院最新发布的Q1二手车在线拍卖数据报告显示,2022年一季度二手车在线拍卖成交量不断攀升。大数据显示,2大数据创始人马晓东马晓东34岁,国云数据创始人,21岁大学毕业在国外跨国公司接触到大数据,当年国内大数据还是空白,他决定研发我们中国人自己的大数据,一开始公司只有4个人,在一间只有10平方米的房子,乡村教师发明铁窗机器人为秘鲁囚犯提供教育服务他的玉米纤维身体会跳舞,说话时会眨眼睛,会回答有关可持续发展目标的问题,甚至会德语这是机器人Jovam,它来到秘鲁首都利马囚犯人数最多的卢里甘乔监狱,支持教师对囚犯进行教育工作。据滴滴订单越来越少了自3月1号起滴滴的订单量明显下滑,加上部分城市疫情影响,司机师傅收入也随之减少,目前不管你是开纯电动车还是混动车和纯电动车,都很难跑出之前的水平,在我们苏州地区也深受影响,今天咱们亏损或达60亿70亿美元!软银据称已将纳斯达克巨鲸的大部分投资组合清盘每经记者蔡鼎每经编辑兰素英北京时间4月2日,据英国金融时报报道,软银已将内部对冲基金SBNorthstar的大部分投资组合清盘,亏损或达60亿美元70亿美元。SBNorthstar早资道孟晚舟担任华为轮值董事长度小满为小微商户提供1亿元免息贷款孟晚舟担任华为轮值董事长4月1日,据华为官网,华为CFO孟晚舟担任轮值董事长。据华为官网介绍,董事会是公司战略经营管理和客户满意度的最高责任机构。董事会及董事会常务委员会由轮值董事华为断然放弃一个鸿蒙发展的绝好机会,真的是不敢吗?看到关于华为MateX3可能在本月底推出的消息,一阵心酸。作为华为顶级的折叠屏手机,虽然可以搭载麒麟9000芯片,却仍然只能支持4G,即便有鸿蒙HarmonyOS2系统加持,预计其