首页 > 编程语言 >JavaScript 最新动态:2024 年新功能

JavaScript 最新动态:2024 年新功能

时间:2024-03-07 10:44:25浏览次数:26  
标签:product const color JavaScript 2024 分组 数组 动态 quantity

前言

随着 Web 技术的日新月异,JavaScript 也在不断地吸收新的特性和技术,以满足日益复杂和多样化的开发需求。在 2024 年,JavaScript 迎来了一系列令人瞩目的新功能,这些功能不仅提升了开发者的效率,也极大地丰富了 Web 应用的表现力和交互性。

在接下来的内容中,我们将逐一介绍这些新功能,并探讨它们如何在实际开发中发挥作用,以及它们如何继续引领前端开发的未来。

Object.groupBy

它是一个新的 JavaScript 方法,它可以根据提供的回调函数返回的字符串值对给定可迭代对象中的元素进行分组。返回的对象具有每个组的单独属性,其中包含组中的元素的数组。

当我们想要根据数组中对象的一个或多个属性的名称对数组元素进行分类时,此方法非常有用。

语法

Object.groupBy(items, callbackFn)

参数

  • items:一个将进行元素分组的可迭代对象
  • callbackFn:对可迭代对象中的每个元素执行的函数。它应该返回一个值,可以被强制转换成属性键(字符串或 symbol),用于指示当前元素所属的分组。该函数被调用时将传入以下参数:
    • element:数组中当前正在处理的元素
    • index:正在处理的元素在数组中的索引

返回值

一个带有所有分组属性的 null 原型对象,每个属性都分配了一个包含相关组元素的数组。

对数组中的元素进行分组

我们可能经常需要对数据库中的项目进行分组并通过 UI 将它们显示给用户。使用 Object.groupBy()就可以简化此类项目的分组。

比如有这样一堆数据:

const arr = [
  { product: "iPhone X", quantity: 25, color: "black" },
  { product: "Huawei mate50", quantity: 6, color: "white" },
  { product: "xiaomi 13", quantity: 0, color: "black" },
  { product: "iPhone 13", quantity: 10, color: "white" },
  { product: "Huawei P50", quantity: 5, color: "black" },
]

然后我们希望将这些设备根据颜色进行分类

const newArr = Object.groupBy(arr, (item) => item.color)

console.log('【newArr】', newArr)

上面的代码按产品的属性值color对产品进行分组,每次调用回调函数时,都会返回与每个对象的属性(“黑色”或“白色”)相对应的键。然后使用返回的键对数组的元素进行分组。

有条件地对数组中的元素进行分组

还是上面的数据,如果我们想要分成iphone和国产品牌两类,可以这么来实现:

const arr = [
  { product: "iPhone X", quantity: 25, color: "black" },
  { product: "Huawei mate50", quantity: 6, color: "white" },
  { product: "xiaomi 13", quantity: 0, color: "black" },
  { product: "iPhone 13", quantity: 10, color: "white" },
  { product: "Huawei P50", quantity: 5, color: "black" },
]

const list = Object.groupBy(arr, (item) => {
  return item.product.includes('iPhone') ? 'iPhone' : '国产品牌'
})

console.log('【list】', list)

扩展

注意: Object.groupBy()最初是作为典型的数组方法实现的。它最初的用途是这样的:

let myArray = [a, b, c]
myArray.groupBy(callbackFunction)

然而,由于ECMAScript技术委员会在实现该方法 时遇到了Web 兼容性问题,因此他们决定将其实现为静态方法 ( )。

Object.groupBy()只需两个参数即可简化数组中对象分组的过程:数组本身和回调函数。

在过去,您必须编写一个自定义函数来对数组元素进行分组或从外部库导入分组方法。

可用性: Object.groupBy()现在所有主要浏览器平台都支持

正则表达式v标志

大家可能熟悉正则表达式 Unicode 标志 ( u),它允许启用对 Unicode 字符的支持。该v标志是u标志大部分功能的扩展。

它除了主要向后兼容该u标志之外,还引入了以下新功能:

交集运算符

交集运算符可以匹配两个字符集中必须存在的字符。其语法为[operand-one&&operand-two],其中&&表示交集运算符, operand-oneoperand-two表示各自的字符集。

const str = 'My name is nanjiu'

const strReg = /[[a-z]&&[^aeiou]]/gv
const strArr = str.match(strReg)
console.log('【strArr】', strArr)

// 【strArr】 ['y', 'n', 'm', 's', 'n', 'n', 'j']
  • [a-z]上面的代码定义了一个匹配小写字母和非元音字符的交集的正则表达式[^aeiuo]
  • 运算&&符确保仅匹配两个集合共有的字符。
  • 这些gv标志启用全局搜索(查找所有匹配项)和正则表达式 v 模式。

差异运算符

差异运算符由两个连续的连字符 ( --) 表示,提供了一种在正则表达式中指定排除项的便捷方法。正则表达式引擎将忽略--后面的任何字符集

查找非 ASCII 表情符号字符:

let myEmojis = "

标签:product,const,color,JavaScript,2024,分组,数组,动态,quantity
From: https://www.cnblogs.com/songyao666/p/18058370

相关文章

  • Arch Linux使用archinstall快速安装配置2024版
    ArchLinux使用archinstall快速安装配置2024版参考:https://wiki.archlinuxcn.org/wiki/安装指南官方安装指南比较繁琐,有提供archinstall​但是并没有详细介绍对应配置项,本教程根据自身安装经历编写安装前的准备[​编辑|编辑源代码]获取安装映像[​编辑|编辑源代......
  • Arch Linux使用archinstall快速安装配置2024版
    ArchLinux使用archinstall快速安装配置2024版参考:https://wiki.archlinuxcn.org/wiki/安装指南官方安装指南比较繁琐,有提供archinstall​但是并没有详细介绍对应配置项,本教程根据自身安装经历编写安装前的准备[​编辑|编辑源代码]获取安装映像[​编辑|编辑源代......
  • 【2024-03-03】连岳摘抄
    23:59看看生鸡活鸭、鲜鱼水菜,碧绿的南瓜、通红的辣椒,热热闹闹,挨挨挤挤,让人感到一种生之乐趣。                                                 ——汪曾祺运气是和......
  • 【2024-03-02】连岳摘抄
    23:59别怕美好的一切消失,咱们先来让它存在。                                                 ——王小波孔子有句教诲很好,“不在其位,不谋其政”。它往往被消极理解,......
  • javascript如何循环遍历对象
    在JavaScript中有多种循环遍历对象的方法,下面本篇文章就来给大家介绍一下使用JavaScript循环遍历对象的方法,希望对大家有所帮助。1、使用for循环for循环是js中最常用的一个循环工具,经常用于数组的循环遍历。letarr=[1,2,3];for(leti=0;i<arr.length;i++){co......
  • 2024-2月总结
    时间过得飞快,一转眼2个月过去了。现在来简单总结下2024年的这两个月。工作这两个月工作自己感觉比较满意的,是把一些陈年老技术债还了一些,升级了项目中的一些依赖,也替换了一个过时、不再维护的依赖。虽然清理的不算很多,但也算是迈出了重要的一步,因为技术债恶心人又不紧迫,一直不......
  • 2024.03.06
          第二天所花时间(包括上课)1h代码量(行)50h博客量(篇)1了解到的知识点AndroidStudio对数据库的增删改,了解了相应的代码          今天学习了AndroidStudio的对数据库的增删改,学习了相应的代码,复习了原来javaweb的相......
  • 2024.3.6学习笔记
    1.InfoNCEloss(源自知乎https://zhuanlan.zhihu.com/p/506544456)1.引入把对比学习看成是一个字典查询的任务,即训练一个编码器从而去做字典查询的任务。假设已经有一个编码好的queryq以及一系列编码好的样本k0,k1,k2...,把k0,k1,k2...可以看作是字典里的key。假设只有一......
  • ICLR 2024|图像匹配新突破!GIM:首个从互联网视频中学习通用图像匹配器的框架
    前言 为了解决基于深度学习方法泛化性的问题,来自厦门大学、Intel、大疆的研究者们提出了GIM:LearningGeneralizableImageMatcherfromInternetVideos。GIM是第一个可以让匹配模型从互联网视频中学习到强泛化能力的训练框架。本文转载自机器之心仅用于学术分享,若侵权请......
  • Nessus 2024年最新安装说明
    截至发文应该是最新的安装说明文档了,目前的Nessus版本是10.7.1下载之后直接安装即可,安装完成后自动跳转出nessus页面,或者打开浏览器访问:https://127.0.0.1:8834(https://localhost:8834) 开始注册: 选择Managedscanner,然后Continue 选择Tenable.sc(现在变成了TenableSecu......