JavaScript中的Array
Array类型是ECMAScript 用的最多的类型了,ECMAScript中的数组每一项可以保存任何类型的数据,也就是说,数组的第一个项保存字符串,用第二个保存数值,用第三个位置来保存对象。二千数据的大小是可以动态调整的,即可以随着数据的添加自动增长以容纳新增数据。
1.创建数组数组的方式分为两种:
1.1使用 nwe 的方式
var colors=new Array();
1.2.使用Array构造函数省略new操作符
var colors=Array(3); //创建一个包含3项的数组
var names=Array("Greg"); //创建一个包含1项,即字符串“Greg”的数组
2.使用字面量的方式来创建
var colors=["red","blue","green"]; //创建一个包含3个字符串的数组
var names=[]; //创建一个空数组
2获取和设置数组的值,试用方括号,如下所示:
var colors=["red","blue","green"]; //定义一个字符串的数组、
alert(colors[0]); //取到第一项,并显示,索引是从0开始的,所以是red
colors[2]="black"; // 修改第三项
colors[3]="brown" ; //新增一个项
3.数组的项数保存在其length属性中,这个属性始终返回0或者更大的值。
var colors=["red","blue","green"];
alert(colors.length); //显示的是3
var names=[];
alert(names.length); //空的数组,长度是0,返回的是0
注意:数组的length属性不是只读的,因此,通过设置这个属性,可以从数据的末尾移除或项数组中添加新项。如:
colors.length=4; //现在数组就多了一个长度,值是undefind
colors.length=2; //数组的长度改变成了2个了
4.检测数组
使用ECMAScript5 新增的Array.isArray() 这个方法,如:
if (Array.isArray(value)) { //value是数组对象
//对数组进行操作
}
5.转换方法
tostring():把数组转成string
join(): 使用自定义的分隔符来构建这个这个字符。如:
var colors=["red","blue","green"];
var joinStr=colors.join("||");
alert(joinStr); //red||blue||green
6.栈方法
Push(): 可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度。
Pop() : 从数组末尾移除最后一项,减少数组的length的值,然后返回移除的项。
Var colors=new Array(); //创建一个数组
Var count=colors.push(“red”,”green”); //添加两项
Alert(count); //返回2
Count=colors.push(“black”); //推入另一项
Var item=colors.pop(); //移除最后一项,并返回移除的对象
Alert(item); //所以,是 black
Alert(item.length); //长度以减少了
7.列队方法
Shift() : 移除数组中第一项,并返回该项,同时将数组长度减1;
Var item =colors.shift(); //取得第一项
Alert(item ); //取得第一项:red
Alert(colors.length); //长度减1
Unshift(): 在数组前端添加任意个项,并返回添加后的长度。
Var colors=[“red”,”blue”];
Var count=Colors.unshift(“black”); //添加一个black到这个数组的最前端,并返回长度
Alert(colors.tostring()); // 现在数组里的项: black ,red,blue
8.重新排序方法
Reverse(): 反转数组项的顺序;
9.操作方法
Concat(): 可以基于当前数组中的所有项创建一个新数组。
Var colors=[“red”,”green”,”blue”];
Var colors2=colosr.concat(“yellow”,[“black”,”brown”]);
Alert(colors); //red,green,blue
Alert(colors2); //red,green,blue,yellow,black,brown
Slice():基于当前数组中的一个或多个项创建一个新数组,
Slice(index,number):index表示开始位置;number表示结束位置,不给默认是到当前数组末尾的所有项。如果结束位置小于开始位置,则返回空数组。
Splice():向数组中插入项,使用方法 如下:
删除:可以删除任意数量的项,只需要制定2个参数: 要删除的位置,要删除的项数
插入:可以向指定位置插入任意数量的项,3个参数:开始位置,0(要删除的数),插入的项
替换: 可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定3个参数:起始位置,要删除的项,要添加的项。
Var colors=[“red”,”green”,”blue”];
Var removed=colors.splice(0,1); //从0开始,删除1项
Alert(remove); //red ,删除的项
Removed=colors.splice(1,0,”yellow”,”orange”); //从位置1开始插入两项
Alert(removed); //返回一个空数组
Removed=colors.splice(1,1,”red”,”blue”);
//从项1开始,删除一项,然后再添加两项,相当于替换,
Alert(removed); //yellow ,返回被替换的项
10.位置方法
IndexOf(value,index): 从数组开始位置向后查找,返回其下标
lastIndexOf(valeu,index): 从数组的末尾开始向前查找。返回其下标
包含两个参数:value:要查找的项, index:开始找的位置,没有找到就返回-1;
Var number=[1,2,3,4,5,4,3,2,1];
Alert(number.indexof(4)); //从开始位置找起,而且没给开始位置,不给是从0开始找起,会一直找,直到找到,返回对应的下标,并返回其下标; 所以返回的是3
Alert(number.indexOf(4,4)); //这次,给了起始位置,所以会从下标4开始找起,下标4对应的是值 5,5后面就是4了,所以返回是 5:
Var person={“name”:”a”};
Var people=[{“name”:”a”}];
Var morePeople=[person];
Alert(people.indexOf(person)); //-1
Alert(morePeople.indexOf(person)); //0
11.迭代方法
Every():对数组何总的每一项运行给定函数,如果该函数对每一项都返回true,则返回true;
Filter();对数组中的每一项运行给定函数,返回这个函数会返回true的项组成的数组。
ForEach(): 对数组中的每一项运行给定函数,这个方法没有返回值。
Map(): 对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
Some():对数组中的没一项运行给定函数,如果该函数对任一项返回true,则返回true
,以上方法都不会修改数组中包含的值。
Var number=[1,2,3,4,5,4,3,2,1];
//item :表示数组具体元素,index:表示下标 ,array:表示当前数组
Var everyResult=number.every(function(item,index,array){
Return (item>2);
});
Alert(everyResult); //false
Var someResult=number.some(function(item.index,array){
Reutn (item>2);
});
Alert(someResult); //true
以上代码调用every()和some(),传入的函数只要给定项大于2就会返回true,对于every(),它返回true,因为只有部分数组项符合条件,对于some(),结果就是true,因为至少有一条大于2.
Var filterResult =.filter(function(item,index,array){
Reutnr (item>2);
});
Alert(fileterResult); //[3,4,5,4,3]
Var mapResult=number.map(function(item,index,array){
Return item*2;
});
Aelrt(mapResult); //[2,4,,6,8,10,8,6,4,2]
number.forEach(function(item,index,array){
//执行操作
});
注意啊: 以上有很多的方法必须要现代浏览器上才用啊,ie9 以前的浏览器都不支持,今天就被坑了。最后用JQURY解决的。
JavaScript中的Array的更多相关文章
- ExtJS学习-----------Ext.Array,ExtJS对javascript中的Array的扩展
关于ExtJS对javascript中的Array的扩展.能够參考其帮助文档,文档下载地址:http://download.csdn.net/detail/z1137730824/7748893 因为 ...
- JavaScript中数组Array方法详解
ECMAScript 3在Array.prototype中定义了一些很有用的操作数组的函数,这意味着这些函数作为任何数组的方法都是可用的. 1.Array.join()方法 Array.join()方 ...
- Javascript中的Array(数组) 、{}(映射) 与JSON解析
做网页总会使用javascript,使用javascript总会使用JSON.最近用到一下,就写写. 下面是总结: 1.将javascript中的Array和{}转化为json字符串可以使用json2 ...
- JavaScript中的Array.prototype.slice.call()方法学习
JavaScript中的Array.prototype.slice.call(arguments)能将有length属性的对象转换为数组(特别注意: 这个对象一定要有length属性). 但有一个例外 ...
- javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈
Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...
- javascript中数组Array的方法
一.常用方法(push,pop,unshift,shift,join)push pop栈方法,后进先出var a =[1,2,3];console.log(a.push(40)); //4 返回数组的 ...
- 详解Javascript中的Array对象
基础介绍 创建数组 和Object对象一样,创建Array也有2种方式:构造函数.字面量法. 构造函数创建 使用构造函数的方式可以通过new关键字来声明,如下所示: 12 var arr = new ...
- [转] 理解 JavaScript 中的 Array.prototype.slice.apply(arguments)
假如你是一个 JavaScript 开发者,你可能见到过 Array.prototype.slice.apply(arguments) 这样的用法,然后你会问,这么写是什么意思呢? 这个语法其实不难理 ...
- JavaScript中的Array类型详解
与其他语言中的数组的区别: 1.JavaScript数组的每一项都可以保存任何类型的数据,一个数组的数组元素可以是不同类型的数据. 2.数组的大小是动态调整的,可以随着数据的添加自动的增长. 1.两种 ...
- 理解javascript中的Array类型
引子: 从事前端开发有段时间了,个人观点:想在前端开发这条路上走的更远,不仅要学好HTML&HTML5.CSS&CSS3,最重要的就是要学好javascript了.所以打好javasc ...
随机推荐
- 递归算法(三)——不借助四则运算实现加法
问题 求两个整型变量的和,不能使用四则运算,但可以使用位运算. 思路 以二进制形式,考虑两个整数相加: a = 01101001b b = 11100111b s = ???????? 一个常见的结 ...
- org.springframework.web.context.ContextLoaderListener(转载)
ContextLoaderListener的作用就是启动Web容器时,自动装配ApplicationContext的配置信息.因为它实现了ServletContextListener这个接口,在web ...
- POJ 3020 Antenna Placement 匈牙利算法,最大流解法 难度:1
http://poj.org/problem?id=3020 #include <cstdio> #include <cstring> #include <vector& ...
- CentOS6.4安装Hadoop2.0.5 alpha - 3-Node Cluster
1.在第2个个节点上重复http://www.cnblogs.com/littlesuccess/p/3361497.html文章中的第1-5步 2.修改第1个节点上的hdfs-site.xml中的配 ...
- PHPExcel 导出表格 不知道好不好用
PHPExcel类是php一个excel表格处理插件了,下面我来给大家介绍利用PHPExcel类来导入与导出excel表格的应用方法,有需要了解的朋友不防参考参考(PHPExcel自己百度下载这里不介 ...
- VG.net矢量图和矢量动画开发平台拓扑图软件免费下载
VG.net拓扑图软件是一个基于.net平台的矢量图开发工具,可广泛应用于包括:电力.军工.煤炭.化工.科研.能源等各种监控软件.工作流设计器.电力.化工.煤炭.工控组态软件.仿真.地理信息系统.工作 ...
- 电子词典的相关子函数db.c程序
整个电子词典是分块做的:包含的Dic_Server.c,Dic_Client.c,db.c,query.c,xprtcl.c,dict.h,xprtcl.h,dict.txt(单词文件) 下面是db. ...
- sass安装 使用
一 什么是sass sass是一种css开发工具.提供了很多便利的写法,使得css开发变得简单 易维护 sass有两种后缀名文件:一种后缀名为sass,不使用大括号和分号:另一 ...
- border-image(转载)
本文转自:http://www.zhangxinxu.com/wordpress/2010/01/css3-border-image%E8%AF%A6%E8%A7%A3%E3%80%81%E5%BA% ...
- CSS颜色代码大全
CSS颜色代码大全 转载:http://blog.163.com/wujinhongisme@126/blog/static/3613698020095115919389/ RGB ( Red,Gre ...