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 ...
随机推荐
- ABAP认识
ABAP是一种高级企业应用编程语言(Advanced Business Application Programming),起源于20世纪80年代.经过不断的发展,现在的版本为ABAP/4,SAP R/ ...
- WC2015 酱油记
这是真·酱油记! Day0 因为我们在上海,所以只要坐高铁就可以了2333.到了火车站以后我们坐大巴到学军中学恩,结果坐大巴的时间和做坐高铁的时间差不做←_←. 吐槽了一下住宿环境和课程表就已经晚上了 ...
- NodeJS利用mongoose模糊查询MongoDB
在Node.js中,直接硬编码可以 Posts.where('title',/答案/); 但是 通过 字符串构造 不行 var qs = '/'+req.query.search+'/'; Posts ...
- AngularJs的UI组件ui-Bootstrap分享(五)——Pager和Pagination
ui-bootstrap中有两个分页控件,一个是轻量级的Pager,只有上一页和下一页的功能,另一个是功能完整的Pagination,除了上一页和下一页,还可以选择首页和最后页,并且支持多种页数的显示 ...
- Java xml object 互转
public class ClassRoom { private int id; private String name; private int grade; public int getId() ...
- 转载--JAVA读取文件最佳实践
1. 前言 Java应用中很常见的一个问题,如何读取jar/war包内和所在路径的配置文件,不同的人根据不同的实践总结出了不同的方案,但其他人应用却会因为环境等的差异发现各种问题,本文则从原理上解释 ...
- highcharts异步获取数据
页面异步代码 $(function () { var chart_validatestatics; $(document).ready(function () { var options_valida ...
- 集合运算(A-B)U(B-A)
实质是两个数组的合并(顺序表最好是有序的) #include<iostream> using namespace std; //创建顺序表 void create(int A[],int ...
- 嵌入式linux应用开发完全手册学习笔记一
2015.3.25星期三 晴 有两个星期没写学习日记了,找个时间把这段时间做的电子词典和ARM小项目总结一下. 下面的知识点总结,U-BOOT:参考PDF文档:嵌入式linux应用开发完全手册 当虚拟 ...
- 转:GROUPING SETS、ROLLUP、CUBE
转:http://blog.csdn.net/shangboerds/article/details/5193211 大家对GROUP BY应该比较熟悉,如果你感觉自己并不完全理解GROUP BY,那 ...