数组概述##
创建数组##
字面量###

数组大小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,"-");
