Javascript学习笔记(七)

1.数组

数组是值的有序集合。每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为索引。js的数组是无类型的,元素可以是任意类型,同一个数组中的不同元素可以是不同的类型。js数组的索引是基于零的32位数值,第一个为0,最大的可能索引为2的32次方减2。js数组可能是稀疏的:数组元素的索引不一定要连续的,中间可以有空缺。每个数组都有一个lenght属性,非稀疏数组,这个属性就是数组元素的个数;稀疏数组,这个属性比所有的元素索引都要大。

数组可以用直接量创建,也可以用var a = new Array(10);注意这个只是预分配了一个空间,没有存储任何值,索引也没分配。如果没有指定这个长度值,相当于创建了一个空数组[]。

如果为一个数组元素赋值,它的索引i大于或等于现有数组的长度时,length属性的值将设置为i+1。如果将数组的length设置成一个小于当前长度的非负整数n时,当前数组中那些索引值大于或等于n的元素将从中删除。

可以调用数组的push函数,在数组末尾增加一个或者多个元素。可以使用unshift()方法在数组的首部插入一个元素,并将其他元素依次移动到更高的索引处。使用delete删除数组元素,有些像把元素值设置为undefined,但是不会修改数组的length,也不会影响其他元素的索引值。如果是非稀疏数组,从数组中删除一个元素,就变成了稀疏数组。pop函数会从数组尾部删除一个元素并改变length的值,返回值是被删除的元素。shift会从数组头部返回元素,并删除头部元素,并将所有元素下移到比当前索引小1的地方。

for/in循环遍历数组的话,返回的属性名可能是按创建顺序而非数值的大小顺序,这种情况最好使用常规的for循环。

join方法会把数组中所有元素都转化为字符串并连接在一起,返回最后生成的字符串。如果不指定分隔符,默认使用逗号。String.split方法是join的逆向操作。reverse函数将数组中的元素颠倒顺序,返回逆序的数组,它并不重新创建数组,而是会返回原数组。sort将数组中的元素排序并返回排序后的数组,如果不传参数,将会以字母表顺序排序,如果有undefined,会被排到数组的尾部;如果不采用字母顺序排序,可以传入一个函数。concat方法创建并返回一个新数组,它的元素包括调用该函数的原始数组的元素和concat的每个参数,如果有参数是数组,会连接这个数组中的元素,而不是数组本身,但是concat不会递归扁平化数组的数组。concat不会改变调用的数组本身。slice函数返回指定数组的一个片段或子数组,它的两个参数分别指定了片段的开始位置和结束位置,返回的数组包含第一个参数指定位置的元素,但不包含第二个参数指定的位置,这两者之间的所有数组元素。如果只指定一个参数,返回的数组将包含从开始位置到数组结尾的所有元素。如果第二个元素是负数,它表示相对于数组中最后一个元素的位置。参数-1指定了最后一个元素。splice会改变调用的数组,会删除从第一个参数开始,长度为第二个参数的所有元素,如果没有第二个参数,则会删除到数组结束,函数的返回值是被删除元素组成的数组,如果后面还有参数,将会把后面的参数插入到第一个参数指定的位置。

forEach方法从头到尾遍历数组,为每个元素调用指定的函数,指定的函数可以使用三个参数:数组元素,元素索引和数组本身,如果只有一个参数,那么会是数组的元素值。

map函数将调用的数组的每个元素传递给指定的函数,并返回一个数组,包含着函数的返回值。所以传递给map的函数应该有返回值。map返回一个新数组,与原来的数组有同样的长度,如果是稀疏数组则也会有相同的缺失元素。

filter函数返回的是一个调用数组的子集,如果传入的函数返回true,那么会将该元素放到返回的数组中。该函数只会返回稠密的数组,因此可以用来压缩稀疏数组的空缺。

every和some函数是对整个数组进行逻辑判定。如果有一个元素会使传入every的函数参数返回false,那么every返回false;如果有一个元素会使传入some的参数函数返回true,那么some将返回true。

indexOf和lastIndexOf函数用来搜索数组中是否包含给定值的元素,返回找到的第一个元素的索引,如果没有找到返回-1。一个从头往尾搜索,一个从尾往头搜索。

可以使用Array.isArray()来判断一个对象是不是数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值