数组概述##
创建数组##
字面量###
数组大小0~232-1,超过232-1则报错
用Array构造器创建数组###
一个参数表示数组长度,多个参数表示数组元素,红色
new
可以被省略
用
delete
删除数组时,数组长度不变,但是被删除元素变为undefined
数组元素增删##
动态的,无需指定大小, 通过
delete
和直接把元素赋值为undefined
之后,前者和后者的2 in arr
的结果是不同的
数组迭代##
for循环
和for(i in arr)
,数组也是对象,有原型Arry.prototype
二维数组##
稀疏数组##
稀疏数组并不含有从0开始的连续索引。一般
length
属性值比实际元素个数要多。不连续的索引返回undefined
遍历时,用in
操作符或者判断数组元素是否为undefined
来判断
数组方法##
数组对象的原型
Arry.prototype
提供了大量的方法对数组进行操作
join-将数组转为字符串###
使用
join
方法来构造重复的字符串
reverse-将数组逆序###
原数组被修改
sort-排序###
默认按照字母排序,原数组被修改
concat-合并数组###
原数组未修改,参数可以是数组,数组会被拉平,但只会拉平一次
slice-返回部分数组###
左闭右开,参数为负数时,-1表示最后一个元素,原数组不会修改
splice-数组拼接###
可以删除数组中的元素,也可以拼接新的元素,原数组被修改
forEach-数组遍历###
3个参数:具体元素的值,索引,指向数组本身,属于es5的新特性
var arr1 = [1,2,3,4,5];
arr1.forEach(function (x,index,a) {
console.log(x+'|'+index+'|'+(a===arr1));
}) // 只适用于IE9以上的浏览器。
map-数组映射###
原数组未被修改
filter-数组过滤###
原数组未被修改
every,sum-对数组的判断###
reduce,reduceRight###
把数组元素两两进行操作,最后聚合成一个唯一的结果
indexOf,lastIndexOf数组检索###
lastIndexOf
从右向左开始查找
Array.isArray-判断对象是否为数组###
es5
Array.isArray([]); //true
总结##
数组与一般对象###
Array.prototype
的原型是Object.prototype
相同点: 都可以继承 数组是对象 对象不一定是数组 都可以当做对象添加删除属性
不同点:数组自动更新length 按索引访问数组常常比访问一般对象属性明显迅速 数组对象继承Array.prototype
上的大量数组操作方法。
字符串与数组###
字符串是类数组的,可以按照数组的索引去访问每个字符,也有
length
属性,但是没有数组中的一些操作方法,字符串可以通过如下的方式使用
Array.prototype.join.call(str,"-");