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 ...
随机推荐
- C#窗体布局方式
DataGridView:显示数据表后台数据绑定: List<xxx> list = new List<xxx>(); dataGridView1.DataSource = l ...
- java日期操作大全
摘自(http://www.blogjava.net/i369/articles/83483.html) java日期操作 大全 先来一个: 取得指定月份的第一天与取得指定月份的最后一天 http ...
- C#中combobox不可编辑与不可选择
不可编辑:comboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 将Style属性改为csDropDownL ...
- 算法课堂笔记13—Online Algorithm
今天的算法课是学习离线算法,在计算机科学中,一个在线算法是指它可以以序列化的方式一个个的处理输入,也就是说在开始时并不需要已经知道所有的输入.相对的,对于一个离线算法,在开始时就需要知道问题的所有输入 ...
- ios打包
ios7.1及以上 itms-services://?spm=0.0.0.0.WIsvD2&action=download-manifest&url=https://mtl.aliba ...
- 【转】局域网内访问VS2012 调试的IIS Express web服务器
1.修改发布项目的web属性 2.在我的文档中打开IISExpress\config\applicationhost.config 加上下面的一句 3.重启调试 转自:http://blog.chin ...
- Ubuntu操作系统安装使用教程 (转)
随着微软的步步紧逼,包括早先的Windows黑屏计划.实施,逮捕番茄花园作者并判刑,种种迹象表明,中国用户免费使用盗版Windows的日子将不会太长久了,那么这个世界上有没有即免费又易用的操作系统呢? ...
- ACE - Reactor源码总结整理
ACE源码约10万行,是c++中非常大的一个网络编程代码库,包含了网络编程的边边角角. ACE代码可以分三个层次:OS层.OO层和框架层: OS层主要是为了兼容各个平台,将网络底层API统一化,这一层 ...
- lua class(table)
自己看吧: Base = {x = 0,y = 0} ---原型表 Base.name = "luohai"Base.age = 22Base.sex = "man&qu ...
- java学习第十一天
第十二次课 目标 一维数组(创建访问) 一.概念与特点 1.概念 相同数据类型的有序集合[] 数组名: 容器的名字 元素: 下标变量,数组名[下标] 长度: length 下标: 位置.索引 ...