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

探索JavaScript 数组的隐藏潜力

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

正如一些人所期望的那样,.every()只是在给定数组的每个元素上运行提供的函数,这里的命名可能会产生误导。相反,.every()确实在每个元素上运行一个函数,但只是为了检查它们是否遵循了我们提供的准则,并最终返回一个合法的布尔值。检查函数提供了参数的标准集合。

探索JavaScript 数组的隐藏潜力

.copyWithin()

对于某些人来说,在单个数组的边界内复制数据可能会有点复杂和无意义。但是,由于它优越的性能(特别是对它的对手TypedArrays来说), 这个方法提供了一种快速移动数组元素的好方法! 在这里,你可以传入1到3个参数:

复制的数据将被粘贴的目标索引。由于 .copyWithin()不会改变源数组的长度,因此,源数组会被替换,旧的数据会被移除。

开始索引,标记要复制的数据的开头(默认为0,数组的起始索引)

结束索引,标记要复制的数据的末尾(不包括提供的索引)(默认为.length,即给定数组的末尾)

探索JavaScript 数组的隐藏潜力

.sort()

.sort()是执行其名称所说明的操作的方法之一。在本例中,它只是对数组进行排序,你可以为它提供一个比较函数,也可以不提供。默认情况下,所有的值都会被转换成字符串,并按照UTF-16编码进行升序排序,也就是说数字从小到大,字符串按照字母表顺序。你也可以提供一个接受两个元素作为独立参数进行比较的函数。这个比较函数会返回一个数字,它将被用于以一个给定的方式对提供的值进行排序。

如果函数返回的数小于0,则作为第一个参数提供的值优先;

如果函数返回的数字等于0,则值将保持不变(规范并没有真正保证);

如果函数返回的数大于0,则作为第二个参数提供的值优先;

探索JavaScript 数组的隐藏潜力

.some()

.some()是一个类似于.every()的方法。它检查源数组中的元素是否满足某些规则(以检查函数的形式提供),并在最后返回一个布尔值。所不同的是, .some()只需要一个元素满足测试,就返回一个正值,不像.every()那样要求每个元素都满足测试。它可以帮助你,例如检查是否至少有一个值带有给定的属性。提供的测试函数接收一个标准参数集合(元素、索引和源数组)。

探索JavaScript 数组的隐藏潜力

迭代

令人惊讶!实际上,在数组API中,只有一个方法可以执行迭代操作。对于那些使用.map()、.reduce()和类似方法的人来说,这只是一个警告,因为这些方法只用于遍历源数组。只有一个方法适用于这个任务,因此,它应该被尊重和众所周知。

.forEach()

.forEach()会执行其名称所代表的操作——遍历源数组的每个元素。在提供一个接收标准参数集的函数的情况下,它会在给定数组的每个元素上运行该函数。

探索JavaScript 数组的隐藏潜力

其他

除了以上所有类别之外,数组API还有更多的方法。下面是其中一些,它们肯定不太为人所知和使用,但在某些特殊情况下可能会派上用场。

.entries()

.entries()是三个返回迭代器-对象方法中的第一个。数组迭代器对象或所谓的iterable是一个简单的结构,可以通过使用for... of循环对该结构进行迭代,它还有一个单独的.next()方法,该方法在迭代时被称为底层方法。当直接调用时,它会返回一个包含value和done属性的对象,这两个属性分别指示当前值和迭代是否完成。当再次调用时,它会返回数组的下一个值,这个过程会持续到源数组的末尾,此时,done 属性将被设置为true。

.entries()方法返回的迭代器将带有以键值对(数组)的形式存在的值,其中第一个元素表示当前索引,第二个元素表示各自的值。你可以将其(稍后将讨论其他方法)与对应的对象进行比较。像Object.entries()或Object.keys() (不在原型中)这样的函数当然比它们的数组兄弟函数更受欢迎,但是它们也做类似的事情。

探索JavaScript 数组的隐藏潜力

迭代完成后,你不能重新启动它。再次执行相同操作的惟一方法是使用相同的方法再创建一个新的iterable。

但是这种方法的用例是什么呢?.next()方法肯定会给你更多的如何迭代你的数组的控制权。而且,.entries()返回的类键值对在我们想同时访问元素的值和索引时肯定是很有用的。但是,在这些情况下,标准对象或映射(我在前一篇文章中讨论过)可能对你来说会更方便。

.keys()

前面我们已经介绍了iterable背后的所有复杂性,还里有两个类似于.entries()的方法——.keys() 和 .values()。第一个方法,顾名思义,会返回一个其值等于源数组索引(即键)的iterable。代替键值数组,它会返回表示数组元素索引的数字。

探索JavaScript 数组的隐藏潜力

.values()

(编辑:核心网)

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

热点阅读