js 数组

来源:互联网 发布:python exec info 编辑:程序博客网 时间:2024/05/15 06:42

数组声明方式:

var empty=[];

var primes=[2,3];

var misc=[1.1,true,'a'];

一个数组的直接量中 的值不一定要求是个静态量,它可以是任意表达式:

var base=1;

var table=[base,base+1];

也可以声明内容是undefined的数组

var undefs=[,,];

数组也可以用构造函数来创建:

var a = new Array();  //效果等同于[],空数组

var b = new Array(9);//长度为9的数组

var c = new Array(5,4,3,'test',true);


访问数组元素a[0]。注意数组的下标必须是0到2G之间的正整数,否则这个下标会自动转换成字符串,成为关联数组访问属性。说到这里,数组其实是一种特殊的对象,所以呢数组也有属性。假设a是个数组,那么a['hello']访问的是a中的hello属性。这个特点很有意思。


给数组添加新元素

js的数组可以具有任意个数的元素,即可以在任何时刻改变元素的个数。比如我要添加一个新元素,只要a[8]=10;这样就加上去了。在js中数组是稀疏的,意味着数组的下标不必是连续的,只有那些真正存储在数组中的元素才能够由js实现分配到内存。假设a中只有下标为1和1000两个元素,那么js解释器就只给1和1000两个元素分配内存。

还有一个比较怪异的用法,我称之为使用数组下标的语法来给一个对象属性赋值,汉译本原文是数组元素也可以被添加到对象中:

var c = new Cirle(1,2,3);

c[0]="hello";

这样的效果只不过是给C对象又定义了一个新的名字叫"0"的属性,c并不会成为数组。


删除数组元素:

delete运算符把一个数组元素设置为undefined,但是元素本身还是继续存在的。要真正的删除该元素,以使下标位置高于它的所有元素都向下迁移到较低的下标位置,那么必须使用一个数组方法。Array.shift()方法删除数组的第一个元素,Array.pop()方法删除掉最后一个元素,Array.splice()从一个数组中删除一个连续范围内的元素。详细使用以后再说。

数组的长度:

数组长度存储在数组的length属性中。它用来说明这个数组包含的元素个数。但是!之前说过js的数组是稀疏的,也就是下标不一定是连续的。比如:

var a = new Array(1,2);

a[10]=3;

alert(a.length);

结果是11 。但是在内存中这个数组只存储了3个元素。所以唯一影响length的值的因素就是数组的最大下标,length是数组的最大下标+1。


遍历数组:

通常:

var a=[1,2];

for(var i=0;i<a.length;i++){
        alert(a[i]);    
    }

但是如果这个数组的元素不是连续的,比如在a声明之后又有一句a[5]=0;那么循环会执行6次,有三个undefined。如果只想给那些定义过的元素循环,只需要在for中增加一个判断条件if(a[i])


截断或增长数组

数组的length既可以读也可以写。如果给length设置了一个比它当前值小的值,那么数组将会被截断。这个长度之外的元素都会被抛弃,它们的值也就丢失了。

如果给length设的值比当前值大,那么新的、未定义的元素会被加到数组末尾。  尽管可以使用数组下标的语法来给一个对象属性赋值(汉译原文是尽管可以将对象赋给数组元素,牛头不对马嘴),但是对象没有length属性。因此length属性成了数组最重要的特性,这使得它有别于其他对象的特性。


多维数组

因为js数组的元素可以是数组,这样也就成了多维数组。访问多维数组语法跟java是一样的。比如a[i][j];

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 网上买的手机没有发票怎么办 网上买的手机没发票怎么办 手机店花呗分期额度不够怎么办 买了手机没有开票怎么办 在京东上买苹果手机没有发票怎么办 买到苹果演示机怎么办 京东白条借不了怎么办 买了东西不给退怎么办 邮政储蓄银行买东西多扣钱了怎么办 快递送错地方了怎么办 菜鸟驿站超过5天怎么办 消费者买到不合格产品怎么办 如果买到不合格的产品怎么办 买到不合格的种子怎么办 买到不合格的空调怎么办 买到不合格的家具怎么办 灭火器买到不合格产品怎么办 路边买到假手机怎么办 网上买的手机屏幕碎了怎么办 天猫订单删除了怎么办 华为入职预约满怎么办 三星c5玩王者荣耀卡怎么办 三星s8背部碎了怎么办 保修期内发动机坏了怎么办 6s主板进水了怎么办 新买的狗晚上叫怎么办 官网手机坏了怎么办 小米商城买手机不发货怎么办 小米商城分期额度不够怎么办 京东买家未退款怎么办 京东自营不退款怎么办 苏宁易购的无门槛15元怎么办 小米5shome键失灵怎么办 苹果电量用的快怎么办 苹果5s掉电快怎么办 小米5s返回键失灵怎么办 苹果5s漏电是怎么办 苹果6s手机漏电怎么办 5s返回键失灵怎么办 苹果5s返回键失灵怎么办 小米5返回键失灵怎么办