什么是数组?
数组也是对象,由中括号包裹,索引从零开始递增,有length属性存储数组的长度
ary[0] 获取第一项
ary[aru.length-1]获取最后一项
数组可以有多维数组
var ary=[ {name:'a'}, {name:'b'} ]
数组的常用方法:
push:向数组末尾添加,参数一个或多个,返回新增后的数组长度,原数组改变
pop:删除 数组末尾一项,无参数,返回删除的项,原数组改变
shift:删除 数组第一项,无参数,返回删除的项,原数组改变( 基于shift删除数组第一项,原有后面每一项索引都要向前 提一位(减一位),如果数组很长,消耗就比较大)
unshift:向数组开头添加,参数一个或者多个,返回新增数组的长度,原数组改变
reverse:把数组倒过来,无参数,返回倒过来的新数组,原数组改变
sort:排序(正序/倒序),无参数/函数,返回拼接后的新数组,原数组改变
sort在不传递参数的情况下,只能处理10以内的数字,真实项目中sort排序都需要传递参数
var ary = [20,5,45,100,89,3]; ary.sort(function (a,b){ return a-b ; //升序 b-a降序 })
splice:增删改数组
删除 |
从索引n删除m个,从索引n删除到末尾 |
删除部分以新数组返回 | 改变 |
新增 | 从索引n处删除0项,把x或更多内容插入到索引n的前面 | 删除部分以新数组返回,如果是0项,返回的是空数组 | 改变 |
修改 | 从索引n删除m个,把x或更多内容替换删除内容 | 删除部分以新数组返回 | 改变 |
需求扩展:
1、删除数组最后一项,有几种方法?
1) pop()
2) splice(ary.length-1)
3) ary.length--
4) delete ary[ary.length-1] 不建议使用
2、向数组末尾追加新的内容,有几种方法?
1) push(x,y,z)
2)splice(ary.length,0,x)
3) ary [ary.length]=x
slice:按照条件查找内容
方法名 | 作用 | 参数 | 返回值 | 原数组是否改变 |
slice | 按照条件查找内容 | 从索引n找到索引m,不包含m | 把查找到的内容以新数组返回 | 不变 |
0和没有参数 可以实现数组克隆 | 浅克隆数组 | 不变 | ||
-3,-1倒数第3个到倒数第1个,不包含倒数第1个 | 把查找的内容以数组返回 | 不变 |
concat:拼接数组,要拼接的数组,返回拼接后的新数组,原数组不变,可基于空数组为拼接的开始,在参数中排列拼接的顺序,空数组不占位置
toString:数组转换为字符串,无参数,返回用逗号返回的字符串,原数组不变
join:数组转换为字符串,可以设置连接符,参数是指定的连接符,返回字符串,原数组不变
数组求和:
基于join使用+号作为分隔符,先把数组变成每一项相加的字符串,基于eval把字符串变成js表达式执行,得到的结果就是数组中每一项累加的和
eval(ary.join('+'))
indexOf / lastIndexOf :检测当前值在数组中第一次/ 最后一次出现的索引位置,参数 为要检测的值,返回索引(-1代表没有),原数组不变
真实项目中为了验证是否包含某一项
var ary = [2,5,6,84]; if(ary.indexOf(100)>-1){ //ary中包含100这一项 }
以上只是数组一部分方法,控制台输入 Array.prototype还会有很多数组的方法没有详细说,由浅至深,下一篇再整理其他的数组方法吧!