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 ...
随机推荐
- Java:集合工具类-Collections
Java.util.Collections 集合框架工具类Collections,其方法都是静态的,本身没有构造函数. 常见方法: static <T extends Comparable< ...
- WCF初探-11:WCF客户端异步调用服务
前言: 在上一篇WCF初探-10:WCF客户端调用服务 中,我详细介绍了WCF客户端调用服务的方法,但是,这些操作都是同步进行的.有时我们需要长时间处理应用程序并得到返回结果,但又不想影响程序后面代码 ...
- C#将字符串中间部分替换为*号
在做商城评价的时候,为了显示评价的真实性同时保护客户的隐私,我们将用户昵称中间部分替换为*(如果是单字则替换为* 两个字符串第二位字符串替换为*)如下图 方法如下: /// <summary&g ...
- centos 非可视化查看已安装的redis
1. 2.
- 微信公众平台开发接口PHP SDK完整版(转载)
<?php/* 方倍工作室 http://www.fangbei.org/ CopyRight 2015 All Rights Reserved*/ define("TOK ...
- json对象转换为json字符串
今天浏览网页的时候看到这个题也是一道很经典的题目了 var str ='aaaaaaajsdjdfkdkg'; ,]; var obj={}; ;i<str.length;i++){ if(!o ...
- Mybatis开篇以及配置教程
MyBatis来源~: MyBatis本是apache的一个开源的项目,原来称为iBatis,2010年这个项目由apache softwarefoundation迁移到了google code,并改 ...
- ctype.h / cctype 中的字符函数
函数名称 返回值 isalnum() 字母或数字 isalpha() 字母 iscntrl() 控制字符 isdigit() 数字(1 ~ 9) isgraph() 除空格之外的打印字符 islowe ...
- 判断JS是否加载完成
在正常的加载过程中,js的加载都是同步的,也就是在加载过程中,浏览器会阻塞接下来的内容的加载.这时候我们就要用到动态加载,动态加载是异步的,如果我们在后边要用到这个动态加载的js文件里的东西,就要保证 ...
- c++成员函数的存储方式---11
原创博客:转载请标明出处:http://www.cnblogs.com/zxouxuewei/ 成员函数属于一个类的成员,出现再类体中.可以被指定为公有,私有或受保护的. 1.在类外面定义成员函数时, ...