JavaScript基础——使用数组
Array对象提供存储和处理一组其他对象的一种手段。数组可以存储数值、字符串或其他JavaScript对象。创建JavaScript数组有几种不同的方法。例如,下面的语句穿件同样的驻足的3个相同的版本:
var arr = ["one","two","three"];
var arr2 = new Array();
arr2[0] = "one";
arr2[1] = "two";
arr2[2] = "three";
arr3.push("one");
arr3.push("two");
arr3.push("three");
第一种方法定义了arr,并使用[]在一条语句中设置它的内容。第二种方法创建arr2对象,然后使用直接索引赋值来增加条目。第三种方法创建arr3对象,然后使用扩展数组的最佳选择push()方法来把条目推到数组上。
要确定数组中元素的个数,可以使用数组对象的length属性,如下面的例子所示:
var numOfItems = arr.length;
数组遵循一个从零开始的索引,这意味着第一项在索引0上,等等。例如,在下面的代码中,变量first的值是Monday,变量last的值将是Friday:
var
week = ["Mondy","Tuesday","Wednesday","Thursday","Friday"];
var first = w [0];
var last = week[week.length-1];
数组对象有许多内置的函数,使你可以用不同的方式来访问和操作数组。下表描述了连接到Array对象,让你操作数组内容的方法。
用来操作Array对象的方法
| 方 法 | 说 明 |
| concat(arr1,arr2,...) | 返回一个数组和作为参数传递的数组的连接副本 |
| indexOf(value) | 返回数组中value的第一个索引。或如果没有找到该条目,返回-1 |
| join(separator) | 把一个数组中的所有元素连接为由separator分隔的单个字符串。如果没有指定分隔符,则使用逗号作为分隔符 |
| lastIndexOf(value) | 返回数组中value的最后一个索引。或如果没有找到该条目,返回-1 |
| pop() | 删除数组的最后一个元素,并返回该元素 |
| push(item1,item2,...) | 添加一个或多个新元素到数组的结尾,并返回数组的新长度 |
| reverse() | 反转数组中所有元素的顺序 |
| shift() | 删除数组的第一个元素,并返回该元素 |
| slice(start,end) | 返回start和end索引之间的元素 |
| sort(sortFunction) | 对数组的元素排序。sortFunction是可选的 |
| splice(index,count,item1,item2...) | 在index指定的索引处,删除count个条目,然后在index出插入作为参数传入的任意可选条目 |
| toString() | 返回一个数组的字符串形式 |
| unshift() | 将新元素添加到数组的开头,并返回新的长度 |
| valueOf() | 方法返回一个数组对象的原始值 |
1、合并数组
你可以用合并String对象的相同方式来合并数组:使用+语句或使用concat()方法。在下面的代码中,arr3最终和arr4是一样的:
var arr1 = [1,2,3];
var arr2 = ["one","two","three"];
var arr3 = arr1 + arr2;
var arr4 = arr1.concat(arr2);
注意
你可以将一个数字数组和一个字符串数组合并。数组中的每一项都将保持自己的对象类型。然而,当你使用数组中的条目时,需要对有多个数据类型的数组保持跟踪,这样你才不会陷入麻烦。
2、遍历数组
你可以使用for或for/in循环对数组进行遍历。下面的代码说明了使用每种方法再数组中遍历每个条目的写法:
var week = ["Monday","Tuesday","Wednesday","Thursday","Friday"];
for ( var i = 0; i<week.length; i++){
console.log("<li>" + week[i] + "</li>");
}
for (dayIndex in week){
console.log("<li>" + week[dayIndex] + "</li>");
}
3、将数组转换为字符串
Array对象的一个非常有用的功能是,将一个数组的元素结合在一起,制造一个String对象,通过使用join()方法指定分隔符分隔。例如,下面的代码把时间组件重新连接成12:10:36的格式:
var timeArr = [12,10,36]
var timeStr = timeArr.join(":");
4、检查数组是否包含某个条目
你经常需要检查数组中是否包含某一个条目。可以使用indexOf()方法做到这一点。如果代码没有找到列表中的条目,则返回-1。如果一个条目在week数组中,下面的函数就把一条消息写到控制台:
function message(day){
var week = ["Monday","Tuesday","Wednesday","Thursday","Friday"];
if (week.indexOf(day) != -1){
console.log("Happy" + day);
}
}
5、在数组中添加条目和删除条目
使用各种内置的方法,有多种往Array对象添加条目,并从Array对象删除条目的方法。下表列出了一些在本书中使用的不同方法。
用来在数组添加或删除元素的Array对象方法,数组显示为从表开始到末尾的进度
| 语 句 | x的值 | arr的值 |
| var arr = [1,2,3,4,5]; | undefined | 1,2,3,4,5 |
| var x = 0; | 0 | 1,2,3,4,5 |
| x = arr.unshift("zero"); | 6(长度) | zero,1,2,3,4,5 |
| x = arr.push(6,7,8); | 9(长度) | zero,1,2,3,4,5,6,7,8 |
| x = arr.shift(); | zero | 1,2,3,4,5,6,7,8 |
| x = arr.pop() | 8 | 1,2,3,4,5,6,7 |
| x = arr.splice(3,3,"four","five","six"); | 4,5,6 | 1,2,3,four,five,six,7 |
| x = arr.splice(3,1); | four | 1,2,3,five,six,7 |
| x = arr.splice(3); | five,six,7 | 1,2,3 |
JavaScript基础——使用数组的更多相关文章
- JavaScript 基础回顾——数组
JavaScript是无类型语言,数组元素可以具有任意的数据类型,同一个数组的不同元素可以具有不同类型.数组的元素设置可以包含其他数组,便于模拟创建多维数组. 1.创建数组 在JavaScript中, ...
- javascript基础知识-数组
1.javascript创建数组时无需声明数组大小或者在数组大小变化时重新分配 2.javascript数组是无类型的 3.数组元素不一定要连续 4.针对稀疏数组,length比所有元素的索引都要大 ...
- JavaScript 基础(二)数组
字符串, JavaScript 字符串就是用'' 和""括起来的字符表示. 字符字面量, \n 换行, \t 制表, \b 退格, \r 回车, \f 进纸, \\ 斜杠,\' 单 ...
- JavaScript基础之数组常用方法
目录 JS 数组常用API 常用属性 常用方法 常见方法语法解释 from方法 isArray concat every fill filter find forEach indexOf join k ...
- javascript基础之数组一
<script type="text/javascript"> //求数组中最大的数 var arr=[123,456,789,657,432,564]; var ar ...
- javascript基础之数组对象
一.定义数组的方法: 定义了一个空数组: var myArray =new Array(); 指定有n个空元素的数组: var myArray=new Array(n); 定义数组并赋值: var m ...
- JavaScript 基础(六) 数组方法 闭包
在一个对象中绑定函数,称为这个对象的方法.在JavaScript 中,对象的定义是这样的: var guagua = { name:'瓜瓜', birth:1990 }; 但是,如果我们给瓜瓜绑定一个 ...
- JavaScript基础04——数组的创建及方法
数组的概念及定义 数组的概念: 一组数据,数据的组和 哪些数据的组和,只要是数据(所有数据),就可以放在数组中 数组的意义: 可以同时操作多个数据 数组 ...
- javascript基础系列(入门前须知)
-----------------------小历史---------------------------- javascript与java是两种语言,他们的创作公司不同,JavaScript当时是借 ...
随机推荐
- java网络osi基础
- HDU 1086You can Solve a Geometry Problem too(判断两条选段是否有交点)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1086 判断两条线段是否有交点,我用的是跨立实验法: 两条线段分别是A1到B1,A2到B2,很显然,如果 ...
- iOS开发——UI基础-懒加载,plist文件,字典转模型,自定义view
一.懒加载 只有使用到了商品数组才会创建数组 保证数组只会被创建一次 只要能够保证数组在使用时才创建, 并且只会创建一次, 那么我们就称之为懒加载 lazy - (void)viewDidLoad 控 ...
- 操作PDF文件的关键技术点
一个PDF文档从大到小可以分成如下几个要素:文档.章节.小节.段落.表格.列表. com.lowagie.text.Document表示PDF文档.必须为它创建一个PDF写入器,即com.lowagi ...
- 【浅墨Unity3D Shader编程】之一 夏威夷篇:游戏场景的创建 & 第一个Shader的书写
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/40723789 作者:毛星云(浅墨) ...
- 如何用Wireshark捕获USB数据?
现在越来越多的电子设备采用USB接口进行通讯,通讯标准也在逐步提高.那么,我们就会好奇这些设备是如何工作的?而无论你是一个硬件黑客,业余爱好者或者只是对它有一点兴趣的,USB对我们都是具有挑战性的. ...
- VB中 ByRef与ByVal区别
函数调用的参数传递有"值传递"和"引用传递"两种传递方式.如果采用"值传递",在函数内部改变了参数的值,主调程序的对应变量的值不会改变:如果 ...
- 常见的MYSQL高可用解决方案
MySQL 是一种关系数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.MySQL 软件采用了双授权政策(本词条"授权政策& ...
- ASP.NET 上的 Async/Await 简介
原文链接 大多数有关 async/await 的在线资源假定您正在开发客户端应用程序,但在服务器上有 async 的位置吗?可以非常肯定地回答“有”.本文是对 ASP.NET 上异步请求的概念性概述, ...
- 关闭EXCEL进程
//导入Windows类库,可以获得进程ID [DllImport("User32.dll", CharSet = CharSet.Auto)] pub ...