JavaScript基础之七(Arrays)

1.关于数组逗号和元素个数:var arr=[], arr1=[,], arr2=[,,] 长度分别为0,1,2。这里有比较奇怪的就是arr2的长度是2不是3,因为数组元素后面的逗号是可选的。

2.稀疏数组和密集数组

  稀疏数组指元素不一定是从0开始的连续的索引,比如:

    var arr=new Array(5);//length=5;
    arr[100]=100;
    console.log(arr.length);//length=101
  console.log(99 in arr);//false

  很显然,稀疏数组需要更多的内存相对于密集数组来说,当然javascript里面根据我们使用不一样,导致该数组是稀疏还是密集。这里需要注意稀疏数组在没有设置值的索引区间是没有元素的,虽然去获取arr[99]会返回undefined,但是这个跟var arr=[undefined,undefined]里面的元素是不同的。

  看一个例子,可能会发现一个书籍里面的错误,应该是浏览器的javascript引擎升级所致。我在最新的IE和CHrome里面测试过  

    var arr=new Array(5);//length=5,还没有任何元素
    var arr1=[,,,,,];//
    console.log(0 in arr);//false
    console.log(0 in arr1);//false 在《权威指南》里面这里写的是true,我这纠错下吧,实践的结果是false。

3.数组的长度length

  1)如果设置length的长度小于了数组本身的长度,那么原来数组中索引在length后面的元素都会被删除。例如:

    var arr = [1, 2, 3, 4, 5, 6];
    arr.length = 3;
    console.log(arr);//1,2,3 被删除的元素4,5,6

  2)当然要清空一个数组可以直接arr.length=0;数组变为[]

4.使用delete删除数组的元素,不会影响数组的长度。

    var arr = [1, 2, 3, 4, 5, 6];
    delete(arr[0]);
    console.log(arr[0]);//undefined
    console.log(arr.length);//6
    console.log(0 in arr);//false 这应该是一个稀疏数组了吧,哈哈

5.几个数组方法:

  1)reverse():反转一个数组。

  2)slice和splice:slice会返回一个新的数组,不会修改原来的数组,splice会修改原数组。

  3)toString():把数组中的每一个元素转成字符串,然后用逗号拼接。例如:[1,2,['c','d',['e']]].toString() -->"1,2,c,d,e"

  4)toLocalString():跟toString的作用一样,是toString的本地版本,不过我确实没发现有什么不一样。

  5)forEach():遍历数组;

  6)Array.isArray():判断是否为数组

6.数组与类数组:类数组里面的length属性不能随着元素添加来改变,也不能设置length属性来缩小类数组,不继承Array.prototype。所以不能调用数组的方法

7.string是一种特殊的数组:Array.isArray('string')-->false,可以当作一种只读的字符数组,但是又不能使用push,pop等方法。因为string是不可变的,所以不能通过数组的方法去修改string。例如:

    var str = 'hello';
    str[0] = 'a';
    console.log(str);//hello

 

你可能感兴趣的:(JavaScript基础之七(Arrays))