JS数组
来源:互联网 发布:阿里云服务器可以干嘛 编辑:程序博客网 时间:2024/06/06 02:04
一.数组的创建方法
1.1采用数组字面量
(数组字面量提供了一种非常方便地创建新数组的表示法。一个数组字面量是在一对方括号中包围0个或多个用逗号分隔的值的表达式。)
a.JS的数组是无类型的,里边可以存放任何类型的数据(表达式)。
varaValues=["string", 24, true, null];
b.也可以包含对象直接量或其他数组直接量(eg)
var bValues=[[1,{x:1,y:2}],[2,{x:3,y:4}]];
c.当数组中省略某个值的时候,省略的元素为undefined
var undefs=[,,];
d.稀疏数组:包含从0开始的不连续索引的数组
在数组直接量中省略值时不会创建稀疏数组,省略的元素在数组中式存在的,值为undefined,和数组元素根本不存在是有差别的
var a1=[,,,];//数组时[undefined,undefined,undefined]
var a2=new Array(3);//该数组没有元素。当你给Array()构造函数传递一个简单的整数时,它不会成为数组的第一个元素的值,而被用来设置数组的长度;
这意味着new Array(3)会创建一个数组长度为3的数组,但没有实际的元素;
var a1=[,,,,];var a2=new Array(3);for(var i=0;i<a1.length;i++){alert(a1[i]);}//alert(a1[0]);<strong>alert(0 in a1);//此处应该显示true,但是返回FALSE,求解</strong>alert(0 in a2);var a3=[,]var a4=[undefined];alert(0 in a3);alert(0 in a4);alert(a3.length);
2.1对象的创建
a.用对象字面量,如:
var oCar = { “color”: “red”, “doors”: 4, “paidfor”:true}
这里创建了一个对象,内有三个属性,可用如“.”号的方式访问对象的属性:
alert(oCar.color); //输出”red”alert(oCar.door); //输出”4”alert(oCar.paidfor); //输出”true”
也可用“[“属性”]”的方式得到属性值,如下:
alert(oCar[“color”]); //输出字串”red”alert(oCar[“door”]); //输出字串”4”alert(oCar[“paidfor”]); //输出字串”true”
用对象字面量定义的数组不具有length属性。
3.1数组和对象的混合
这里只能使用混合字面量,来创建“对象数组”或“包含数组的对象”。
var oCars =[{ “color”: “red”, “doors”: 2, “paidfor”:true},{ “color”: “blue”, “doors”: 4, “paidfor”:true},{ “color”: “white”, “doors”: 2, “paidfor”:false}];
这就是一个对象数组,里面包含了三个对象,访问时形如这样:
alert(oCars[1].color); //输出“blue”
二.数组长度
a.length属性值代表数组中元素的个数,值比数组中最大的索引大1
b.当数组时稀疏的时,length属性值大于元素的个数
c.设置length属性为一个小于当前长度的非负整数时,当前数组中那些索引值大于或等于n的元素将从中删除
d.将数组的length属性值设置为大于其当前的长度,在数组尾部创建一个空的区域
三.数组元素的添加和删除
a.push()方法在数组末尾增加一个或多个元素
a=[];
a.push("zero");
a.push("one","two");
push()在数组的尾部添加一个或多个元素,并返回数组新的长度
pop()删除数组的最后一个元素,减小数组长度并返回它删除的值
var stack=[];
stack.push(1,2); [1,2] 2
static.pop();[1] 2//删除的值
unshift()在数组头部添加一个或者多个元素,返回数组新的长度
shift()删除数组第一个元素并将值返回
删除:删除数组元素与为其赋undefined值是类似的,对一个数组元素使用delete不会修改数组的length,变成稀疏数组
我们可以删除对象的某个属性:
var o = { x: 1 };delete o.x; // truealert(delete x);alert(o.x); // undefined
但不能删除变量,比如以下面这种方式声明的:
//这种定义存在的问题
var q = 1;alert( delete q); // falsealert( q); // 1也不能删除函数,比如下面所定义的:function x(){}delete x;//false
当声明的变量和函数成为 Variable object 对象的properties ——可能是 Activation object 对象(对于 Function code 来说),或全局对象(对全局代码来说),这些 properties 创建时就被赋予了 DontDelete attribute属性.然而,任何显式(或隐式)对指定 property 属性的赋值所创建的 property 属性则没有DontDelete属性.这就是为什么我们可以删除某些 properties属性,而其他的不能删除的本质原因
DontDelete指的是: 在 property上的一个特殊attribute,用于控制是否可以删除此property.注意,一些内置对象的属性被指定为DontDelete,所以不能被删除.特殊的arguments变量(或者,正如我们刚刚介绍的, Activation 对象的属性等) 拥有 DontDelete 标志.所有 function实例的length 属性(形参个数)也具有 DontDelete 标志
(function(){ /* 不能删除 `arguments`,因为其拥有 DontDelete */ delete arguments; // false typeof arguments; // "object" /* 不能删除 function 的 `length`; it also has DontDelete */ function f(){} delete f.length; // false typeof f.length; // "number" })();
splice()方法
能够从数组中删除元素,插入元素到数组中或者同时完成这两种操作
4个参数,前两个参数指定需要删除的数组元素。第一个参数指定了插入或删除的起始位置,第二个参数指定删除的个数,若省略则删除从起点开始到结尾的所有元素,返回由删除元素组成的数组,若没有删除元素则返回空数组。
var a=[1,2,3,4,5,6,7,8];a.splice(4);a.splice(1,2);
后两个参数指定需要插入到数组中的元素,从第一个参数指定的位置开始插入
var a=[1,2,3,4,5]alert(a.splice(2,0,'a','b'));alert(a);alert(a.splice(2,2,[1,2],3));//插入数组本身而不是数组元素alert(a);
四.遍历数组
遍历稀疏数组的方式
a.跳过null,undefined和不存在的元素
for(var i=0;i<a.length;i++){ if(!a[i])continue;}
b.只跳过undefined和不存在的元素
for(var i=0;i<a.length;i++){if(a[i]===undefined)continue;}
c.只跳过不存在的元素仍要处理存在的undefined元素
for(var i=0;i<a.length;i++){if(!(i in a)) continue;}
五.多维数组
数组里面可以包含对象,所以可以把数组里面的某个元素再声明为数组,例如
var a = new Array();
a[0] = new Array();
a[0][0] = 1;
alert(a[0][0]); //弹出 1
声明的时候赋值
var a = new Array([1,2,3], [4,5,6], [7,8,9]);
var b = [[1,2,3], [4,5,6], [7,8,9]];
- js数组
- js数组
- JS 数组
- js 数组
- js数组
- JS数组
- js数组
- js 数组
- JS 数组
- js数组
- js 数组
- JS数组
- js数组
- js数组
- js数组
- JS 数组
- js数组
- js 数组
- 不可不知的JVM 中堆 Heap、栈 Stack、方法区 Method area 、本地方法区 Native method area
- 如何把内核、uboot、和根文件系统下载到开发板中
- http expires cache-control last-modified if-modified-since
- ORACLE 计算时间相减间隔
- 本文专注于<递归算法和分治思想>
- JS数组
- Const Correctness in C++
- Android菜鸟的成长笔记——可爱的小闹钟
- c++中typeid().of 的应用
- Ubuntu12.04调节亮度并保存
- poj1015
- HDOJ-3790-最短路径问题 解题报告
- 第十四周上机实践项目——阿拉伯数字之素数
- 理解JavaScript原型prototype