JavaScript数组

定义:数组是值的有序集合。每个值叫做一个元素,而每个元素值数组中有一个位置,以数字表示,成为索引。JavaScrpt数组是无类型的(数组可以是任意类型,并且同一个数组的不同元素也可能有不同的类型)JavaScrpt数组的索引是基于零的32位数值:第一个元素的索引是0,最大可能的所有是4294967294(2^32-2)。JavaScrpt数组是动态的。

创建数组(省略的元素将被赋值为undefined):

             1、数组直接量(在方括号中将数组元素用逗号分隔开即可。)

                  var empty=[] //空数组

                  var misc=[1.1,true,"a0",]   //3个不同类型的元素和结尾的逗号        

            2、调用构造函数Array( )是创建数组的另一种方法。

                 var a=new Array();    //调用没有参数,创建一个没有任何元素的空数组,等同于[]

                 var a=new Array(10);   //表示数组的长度

                 var a=new Array(5,3,4,"testing") //显试指定两个或多个数组元素或者数组的一个非数值元素

数组元素的读和写(使用[]操作符来访问数组中的一个元素)

            数组是对象的特殊形式。数值转换为字符串,字符串作为属性名来用。数组没有“越界”错误的概念。

            例如:var a=["world"];

                     var value=a[0];    //读第一个元素

                     a[1]=2;     //写第二个元素

                     a[-1.23]=true;  //这将创建一个名为“-1.23”的属性

                     a["1000"]=0;     //这是数组第1001个元素

                     a[1.00]      //和a[1]相等

稀疏数组(就是包含从0开始的不连续索引的数组,length属性值大于元素个数)

          例如:

                 a=new Array(5);    //数组没有元素,但a.length=5

                 a=[];   //创建一个空数组,length=0

                 a[1000]=0;      //赋值添加一个元素,但是设置length=1001

                 var a1=[,,,];         //[undefined,undefined,undefined]

          注意:当中数组直接量中直接省略值不会创建稀疏数组。当省略数组直接量中的值时,所得到的数组也是稀疏数组,省略掉的值是不存在的。

                 var a1=[,]; //此数组没有元素,长度为1

数组长度(针对稠密数组,length属性值代表数组元素的个数,其值比数组中最大的索引大1)

        例如:

                [].length  //=>0

                ['a','b','c'].length //=>3

如果为一个数组元素赋值,它的索引i大于或等于现有数组的长度时,length属性的值将设置为i+1

设置length属性为一个小于当前长度的非负整数n时,当前数组中那些索引值大于或等于n的元素将从中删除;还可以将数组的length属性值设置为大于其当前长度,实际上这不会向数组添加新的元素,它只是在数组尾部创建一个空的区域。

数组元素的添加和删除

               添加:1、为新索引赋值

                        2、   使用push()方法在数组末尾增加一个或多个元素,也可以使用unshift()方法在数组的首部插入一个元素,并且将其他元素依次移到更高的索引处。

               删除:1、删除对象属性一样使用delete运算符来删除数组元素(delete操作并不影响数组长度)。对一个数组元素使用delete不会修改数组的length值,也不会将元素从高索引处移下来填充已经删除属性留下的空白。如果从元素中删除一个元素,它就变成了稀疏数组。

                           2、使用pop()方法,或者shift()方法。

最后,splice()是一个通用的方法来插入、删除或替换数组元素。

数组遍历

      使用for循环是遍历数组元素最常见的方法

       例如:

               var keys=Object.keys(o);   //获得o对象属性名组成的数组

               var values=[];     //在数组中存储匹配属性的值

               for(var i=0;i<keys.length;i++){   //对数组中每个索引

                       var key=keys[i];  //获得索引处的键值

                       values[i]=o[key];   //在values数组中保持属性值

                }

   补充:还可以使用for/in循环处理稀疏数组

多维数组:JavaScript不支持真正的多维数组,但可以用数组的数组来近似。

数组方法(见上一篇博客数组 Array相关函数

数组类型:给定一个未知的对象,判定它是否为数组通常非常有用。在ECMAScript 5中,可以使用Array.isArray()函数来做这件事情。(typeof对数组返回“对象”,并不能判定它是否是数组)

类数组对象

JavaScript数组的特性:

  • 当有新的元素添加到列表中时,自动更新length属性。
  • 设置length为一个较小值将截断数组。
  • 从Array.prototype中继承一些有用的方法
  • 其类属性为Array

为一个常规对象增加了一些属性使其变成类数组对象,然后遍历生成的伪数组的“元素”

var a={};  //从一个常规空对象开始
//添加一些属性,称为“类数组”
var i=0;
while(i<10){
  a[i]=i*i;
  i++;
}
a.length=i;
//现在,当做真真的数组遍历它
var total=0;
for(var j=0;j<a.length;j++){
   total+=a[j];
}

作为数组的字符串:字符串的行为类似于只读数组,除了用chartAt()方法来访问单个字符以外,还可以使用方括号。

        var s=test;

       s.chartAt(0);  //=>'t'

       s[1];      //=>'e'

当然,对字符串的typeof操作符依旧返回String。字符串是不可变值,是只读的,即不可修改,并且如果使用数组方法来修改字符串会导致错误(出错的时候没有提示)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值