资讯专栏INFORMATION COLUMN

那些年,前端学习之路的疑难杂症(三):数组和Date的一些梳理

xeblog / 2173人阅读

摘要:将指定的数字索引值转换成字符串索引值变成,然后将其作为属性名来用。返回一个由删除元素组成的数组。该方法返回的数组元素是调用的数组的一个子集。使用的函数有四个参数初始值积累值数组元素元素索引数组本身。

前言

很多人在学习原生JS的过程中会遇到一些疑惑,比如在学习array时,就很容易搞不清哪些方法会改变原来数组,哪些方法不会改变原来数组?再比如很多人会使用new Date()获取时间,却搞不清楚1970年是什么鬼。这篇文章就是针对诸如此类问题的总结。如果你有这方面的疑惑,千万不要错过这篇文章哦~

正文 一:数组

1.JS 数组特点(重点知识)
(1)数组元素可以是任意类型的,并且同一个数组的不同元素也可能是不同的类型

(2)数组是动态的:根据需要它们会增长或者缩减,并且在创建时无需声明一个固定大小或者在数组大小变化时无需重新分配空间

(3)数组元素的索引不一定要连续的,它们之间可以有空缺。如果省略数组直接量中的某个值,省略的元素在数组中是存在的,省略的元素将被赋予undefined值

(4)JS数组就是JS对象的特殊形式,数组索引实际上和碰巧是整数的属性名差不多。JS将指定的数字索引值转换成字符串——索引值1变成“1”,然后将其作为属性名来用。所有的数组都是对象,可以为其创建任意名字的属性。但是如果使用的属性是数组的索引,数组的特殊行为就是根据需要更新它们的length属性值。

注意事项
1)区分数组的索引和对象的属性名
所有的索引都是属性名,但只有0——2^32-2的整数属性名才是索引。
2)稀疏数组
稀疏数组就是包含从0开始的不连续索引的数组。如果数组是稀疏的,length属性值大于元素的个数。
3)数组长度
如果为一个数组元素赋值,它的索引i大于或者等于现有数组的长度时,length的属性将设置为i+1
设置length属性为一个小于当前长度的非负整数n时,当前数组中那些索引值大于或等于n的元素将从中删除
4)delete
delete可以用来删除一个数组元素,这类似于隐式给数组元素赋值undefined,不会修改数组的length属性

2.数组方法
不改变原数组:join(有返回)concat(有返回) sort(有返回) toString(有返回)
改变原数组的:reverse sort(有返回) splice(有返回)pop push shift unshift

(1)join
将数组中的所有元素转化为字符串并连接在一起,返回最后生成的字符串。
(2)reverse
将数组中的元素颠倒顺序,返回逆序数组。它不通过重新排列的元素来创建新的数组,而是在原来的数组中重新排列了它们。
(3)sort
将数组中的元素排序后并返回排序后的数组。如果数组中包含undefined,它们会被排到数组的尾部。
(4)concat
创建并返回一个新数组,它的元素包含调用concat()的原来数组的元素和concat()的每个参数。
(5)slice
该方法返回指定数组的一个片段或子数组。
(6)splice
在数组中插入或者删除元素的通用方法。splice()会修改调用的数组。splice()返回一个由删除元素组成的数组。
(7)push() pop() shift() unshift()都会改变数组
(8)toString() toLocalString()
toString()方法将每个元素转换为字符串,并且输出用逗号分隔的字符串列表。注意输出不包括方括号或其他形式的包裹数组值的分隔符

3.ECMAScript中新的数组方法
改变原来数组的只有:forEach(无返回)

(1)forEach
该方法从头到尾遍历数组,为每个元素调用指定的函数。
(2)map
该方法将调用的数组的每个元素传递给指定的函数,并且返回一个数组,它包含该函数的返回值。map返回的是新数组:它不修改调用的数组。
(3)filter
该方法返回的数组元素是调用的数组的一个子集。传递的函数是来逻辑判断的:该函数返回true或false。如果返回值为true或者能够转换为true的值,它将被加到一个作为返回值的数组中。
(4)every和some
every方法当且仅当针对数组中的所有元素调用判定函数都返回true时,才返回true.
some方法当数组中至少有一个元素调用判定函数返回true,它就返回true.并且当且仅当数值中的所有元素调用判定函数都返回false,它才返回false
(5)reduce和reduceRight
reduce和reduceRight方法使用指定的函数将数组元素进行组合,生成单个值。reduce需要两个参数:一个是执行简化的函数,另一个是传递给函数的初始值。reduce使用的函数有四个参数:初始值/积累值、数组元素、元素索引、数组本身。
(6)indexOf()和lastIndexOf()
indexOf()和lastIndexOf()搜索整个数组中具有给定值的元素,返回找到的第一个元素的索引或者如果没有找到就返回-1.indexOf从头至尾搜索,而lastIndexOf则反向搜索。

总结:
能改变原来数组的有:

sort() reverse() splice() forEach() pop push shift unshift

附:关于数组与类数组的区别,请参考这里:JS类数组

二:Date

详情参考:https://segmentfault.com/a/11...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/86837.html

相关文章

  • 那些前端学习之路疑难杂症(二):delete使用介绍

    摘要:如果你想让一个数组元素的值变为而不是删除它,可以使用给其赋值而不是使用操作符。此时数组元素是在数组中的操作符与直接释放内存只能通过解除引用来间接释放没有关系。 delete 操作符用来删除一个对象的属性 语法EDIT delete expression expression 应该是一个对象的属性引用,例如: delete object.property delete object[p...

    tainzhi 评论0 收藏0
  • 那些前端学习之路疑难杂症(四):面试中遇到3个问题概览

    摘要:闭包能用来实现私有化和创建工厂函数等作用。关于闭包的常见面试题是这样的写一个函数,循环一个整数数组,延迟秒打印这个数组中每个元素的索引。 文章来源:http://mp.weixin.qq.com/s/vs0... 前言 在公众号上看到了这篇文章,觉得很有用,有助于理解JS学习中的一些重点难点。决定把它整理下发布出来。该文章主要介绍了JS中的三个问题。在以后的几篇文章里,我会详细介绍这三...

    gecko23 评论0 收藏0
  • 那些前端学习之路疑难杂症(一):严格模式与非严格模式

    摘要:反之亦然非严格合并严格看起来是非严格的。在普通的里面给一个拼写错误的变量名赋值会使全局对象新增一个属性并继续工作尽管后面可能出错在现在的中有可能。第三严格模式禁止删除声明变量。 文章整理自MSDN:https://developer.mozilla.org... 1.逐步使用严格模式 ECMAScript 5的严格模式是JavaScript中的一种限制性更强的变种方式。严格模式不是一个...

    zombieda 评论0 收藏0
  • 前端开发-从入门到Offer - 收藏集 - 掘金

    摘要:一些知识点有哪些方法方法前端从入门菜鸟到实践老司机所需要的资料与指南合集前端掘金前端从入门菜鸟到实践老司机所需要的资料与指南合集归属于笔者的前端入门与最佳实践。 工欲善其事必先利其器-前端实习简历篇 - 掘金 有幸认识很多在大厂工作的学长,在春招正式开始前为我提供很多内部推荐的机会,非常感谢他们对我的帮助。现在就要去北京了,对第一份正式的实习工作也充满期待,也希望把自己遇到的一些问题和...

    sf_wangchong 评论0 收藏0
  • 告别CTO,体验创业维艰

    摘要:加入维权骑士团队,担任技术负责人,俗称。三创业榜单年月,在维权骑士正好呆满一整年。因为自己的一些考虑,我选择出来创业,创业的项目叫榜单。年开发管理经验,龙泉寺信息技术组义工,前维权骑士技术负责人。持续创业者,目前在做榜单创业 一、当CTO 2016年3月,我离开北京华夏基金,来到杭州。加入维权骑士团队,担任技术负责人,俗称CTO。 诚惶诚恐,最开始的时候很害怕别人称呼自己CTO。...

    MorePainMoreGain 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<