1. 数组定义(推荐使用字面量)
数组与对象类似:
上面两种方法都可以往里面传一堆参数,系统默认是数组打印
只传一个参数的就不一样了,第一个构造函数的方法默认传进去的是长度:例第一行结果是undefined×10;但第二种字面量的方法结果仍是一个数10
第二个图第一行:创建长度为10的空数组只能这么创建,只写一位不能写小数报错
2. 数组的读和写(JS里面数组几乎不报错)
不可以溢出读指的是:结果是undefined
可以在控制台赋值使数组长度增加
例: var arr=[];里面是空数组,输出结果都是undefined
3. 数组的常用方法
3.1 改变原数组
3.1.1 push:往里添加数据的方法
在数组的最后一位添加数据,可以添加无数位
模拟系统的push方法:
3.1.2 pop :把数组的最后一位剪切出去
只能剪切一位
3.1.3 shift(在数组的前面减几位),unshift(在数组的前面加几位都行)
3.1.4 reverse(将原数组逆返)
3.1.5 splice(切片)
例1:
例2:从第一位开始切一个数,然后把第二个逗号后面的插入切掉的数的位置
例3:在3和5中间加4
例4:从倒数第一位截一个数
原理是这个:+length
3.1.6 sort(给数组排序) 按ASCII码排的)
升序:
降序:
按ASCII码排序:最后结果不是升序我们想要的结果
在sort接口里添加一个匿名函数,就能让sort按照我们想要的任何一种方法排序
第一次调用函数时会把数组的一二位传进来,再看返回值,返回值自己控制
传参的时候比较两个数;第一次1.3,第二次1.5;第三次1.4,第四次1.10,第五次3.5..........(冒泡排序算法)
升序:
升序:
直接返回结果就行了:
降序:
降序直接返回这个:
总结:
例题:拓展
补充一个下面的,返回随机数:(0-1)之间
如果想让返回值可正可负,
例题:按字符串长度排序
按字节长度排序:
3.2 不改变原数组
3.2.1 concat(把后面的数组拼到前面的数组上)
拼完了是一个新数组,不会影响原来的数组
3.2.2 toString
把数组变成字符串展示出来
3.2.3 slice(截取)
因为不改变原数组,所以必须拿一个接收新数组
下面是两个参数的情况:
一个参数的情况:
从该位开始截取,一直截取到最后 可以填负数,用负数加上数组里一共几个数
不写参数就是整个截取
3.2.4 join
调用join,里面必须是字符串形式的,空串也得是字符串
如果里面是“-/!/~”,他会把数组里所有东西用-连接起来输出(传进去了啥就按啥连接,但必须是字符串形式,加“”)
3.2.5 split(是字符串的方法但是和数组方法可逆)
spilt返回数组,join返回字符串
作用:按照什么拆分成数组
var arr = [1,2,3,4,5,6];
如果按4拆分,4就隔开了
例题:把下面这些公司连起来,如果join里面什么都不传,它是按逗号连接的,传空串就是啥也没有直接连起来的
另外的方法:但是不推荐
直接加起来
或者放数组里:
4. 类数组
类数组:长得像数组,也可以当数组用,但就不是数组,
下面就是类数组,是对象但是用起来跟数组一样
调用了一个push,加了个d,出来个本来没有的3d,length也变成4了
在后面加了一个splice方法之后,就长得跟数组一样了,但还是对象
原理:obj引用this变成obj,push原理