加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

探索JavaScript 数组的隐藏潜力

发布时间:2019-07-18 04:35:41 所属栏目:建站 来源:Web前端程序员
导读:毫无疑问,数组是最有用和最流行的JS数据结构之一。这些索引的集合一次又一次地证明,它们仍然是各种用例的最佳选择(如果不只是它一个的话)。但是,如果没有它们完整的、极具表现力的API,数组本身就不会那么有价值。这就是今天帖子的主题! 我们将介绍一些
副标题[/!--empirenews.page--]

毫无疑问,数组是最有用和最流行的JS数据结构之一。这些索引的集合一次又一次地证明,它们仍然是各种用例的最佳选择(如果不只是它一个的话)。但是,如果没有它们完整的、极具表现力的API,数组本身就不会那么有价值。这就是今天帖子的主题!

探索JavaScript 数组的隐藏潜力

我们将介绍一些不太为人所知的方法,以及其他一些可能很难记住的方法,这些方法是在数组API中原生包含的。有些甚至可以追溯到很久以前!在它们的帮助下,你将能够编写更简洁、更实用的代码(当然是以FP-style),有时甚至可以编写更高性能的JS代码!其中一些可能简单一些,一些可能要困难点,但是本文绝对不是针对完全初学者的!当然,如果你已经知道并记住了所有这些,花点时间来提醒自己一些细节或学习一些新技巧!

转换

为了更好的阅读体验,我将所有列出的方法分成4组。每个组都收集至少共享一个特殊属性的方法。第一组称为“转换”。它里边的所有的方法都是将数组转换为其他形式。它们都以不可变的方式运行,在结果中返回一个新的数组,并不影响原始数组。

.filter()

我想我不需要讨论过滤数组有多有用。使用.filter()你可以做到这一点!你所要做的就是传递一个过滤函数,给定当前元素的值、索引和源数组,该函数会输出布尔值,用于指示给定元素是否应该包含在结果数组中。

探索JavaScript 数组的隐藏潜力

.map()

.map()可能是FP定制的JS编程中最受欢迎的数组方法之一。如你所指,它使用给定的映射函数来处理(“map”)你的数组,并返回一个带有新处理过的数据的新数组。上面提到的函数提供了一个标准参数集,其中包括元素、索引和源数组参数,并且应该返回将要包含在结果中的值。因此,有了所有这些数据,你就已经具备了以你想要的方式改变你的数组所需要的所有东西.

探索JavaScript 数组的隐藏潜力

.flat[Map]()

嵌套数组在现在是很常见的。实践证明它们在表示2D或3D数据格式时特别有用。使用这样的维度完全有可能进行更深入的研究,但是,正如我们都知道的,跟踪和访问这样的数据会变得越来越困难。ECMAScript规范的开发人员清楚地认识到了这种模式,并从最新的ES规范和始终绿色的浏览器开始,为我们引入了新的.flat()方法。它的规则很简单——它只是按指定的深度(默认为1)将嵌套数组扁平化,并有效地为你提供一个比以往任何时候都要扁平的数组!

探索JavaScript 数组的隐藏潜力

还有另一个与数组扁平化相关的方法。我说的是. flatMap(),正如你所预料的,它是.map()和.flat()方法的完美结合。基本上,你可以像.map()那样使用这个方法——使用相同的参数集,等等,但是生成的数组稍后会被扁平化1层。很简单的。那么,这种方法可能的用例有哪些?为此,请思考一下下面的字符串处理示例。

探索JavaScript 数组的隐藏潜力

也许这有点粗略,但我想你已经明白了。一旦你理解了这个方法是如何工作的,你肯定会发现一些你自己的用例。附注,这种方法比分别使用.map()和.flat()性能要好一点。

交互

“交互”类别将所有在源数组上运行的方法进行了分组,这些方法并不会提供一个全新的数组,而是对数组进行改变或返回完全不同类型的值。

.reverse()

当然,.reverse()方法很简单,但是不太为人所知,它的作用与其名称的含义完全相同——反转数组中元素的顺序。因此,最后的将被放在第一个。在处理不同类型的队列时,这个方法很可能会派上用场。记住,这个方法会改变源数组。

探索JavaScript 数组的隐藏潜力

.reduce[Right]()

如果你想快速地将你的数组(“reduce”)转换为单个值,你可以使用.reduce()方法来轻松地实现。如果提供了正确的函数(所谓的缩减器),它稍后会对数组中的每个元素执行该函数,并将结果累积到一个变量中。

探索JavaScript 数组的隐藏潜力

这个参数函数会返回一个累积值,稍后你可以用它的第一个参数来引用它。在顶峰时,该函数可以提供4个参数(按给定顺序):

累积值 (可以是字符串、数组、对象或任何其他什么);

数组的当前值会被缩减;

当前值的索引;

将被缩减的数组;

如果缩减顺序对你来说很重要,那么你应该知道你还可以使用.reduceRight()方法,它与前面的方法执行完全相同的操作,但是它是从右边开始,向前进行。

.find[Index]()

查找数组中的特定元素可能是一项艰巨的任务,除非它是第一个或最后一个元素。这里,ES6规范中添加的 .find()方法就非常有用。它只接受处理标准参数集的检查函数,并从给定数组中返回第一个匹配的值,否则返回undefined。

探索JavaScript 数组的隐藏潜力

还有一个.findIndex()方法,与第一个方法一样,它使用匹配函数来查找值,但是返回的是索引而不是原始值。它可以与.indexOf() 或 .lastIndexOf()进行比较,也可以用来检索与提供的值匹配的第一个和最后一个值的索引,但是它的表达能力不如.findIndex()及其匹配函数。

探索JavaScript 数组的隐藏潜力

最后一点需要注意的是——如果你使用.indexOf()只是为了检查一个值是否在给定的数组中,你可以考虑使用.includes() (ES6特性)——它返回一个布尔值,并且比它的替代方法具有更好的性能。

.every()

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读