5.2 Array类型
◆ 创建数组的基本方式有两种。
①第一种是使用Array构造函数,new关键字可省略
var colors = new Array();var colors = new Array(20); //length值为20var colors = new Array("red","blue","black");
②第二种是使用字面量表示法
var colors = ["red","blue","black"]; var emptyArr = []; //空数组
◆ 读取和设置数组的值
var colors = ["red","blue","green"]; alert(color[0]); //显示第一项 color[2] = "green" //修改第三项 color[3] = "pink" //增加第四项
◆ length属性,可以通过设置该属性移除或添加数组中的项目
利用length属性可以在数组末尾添加项: colors [ colors.length ] = "white"
最后一项的索引是length-1
◆检测数组
instanceof()
Array.isArray()方法
◆栈方法 (LIFO)
Last-In-First-Out 后进先出的数据结构,最新添加的项最早被移除。push()和pop()方法。
push()方法可以接受任意数量的参数 ,把他们逐个添加到数组末尾,并返回修改后数组的长度。而pop()方法则移除数组最末尾的一项,返回移除的项。
var color= new Array();var count=color.push("red","green");alert(count); //2count = color.push("black");alert(count); //3document.write(color); //red,green,blackvar item = color.pop();alert(item); //blackdocument.write(color); //red,green
◆队列方法(FIFO)
队列在列表的末尾添加项,从列表的前端移除项。push()方法和shift()方法
push()向数组末端添加项,shift移除数组中的第一个项并返回该项。
unshift()方法跟shift()方法相反,它在数组前端添加任意个项返回该新数组的长度。
◆重排序方法 :reverse() 和 sort()
reverse()方法会反转数组项的顺序。
var values = [1,2,3,4,5]; values.reverse(); alert(values); //5,4,3,2,1
sort()方法按会调用每个数组项的toString()转型方法,然后比较得到的字符串,再从小往大排。
var values = [0,1,5,10,15]; values.sort(); alert(values); //0,1,10,15,5
很多sort()方法接收一个比较函数作为参数,如:
function compare(value1,value2){if(value1<value2){return -1;}else if(value1>value2){return 1;}else{return 0;} }
把上面的比较函数作为参数传递到sort()方法:
var values = [0,1,5,10,15]; values.sort(compare); alert(values); //0,1,5,10,15
交换比较函数返回的值可以产生降序排序的结果。
function compare(value1,value2){if(value1<value2){return 1;}else if(value1>value2){return -1;}else{return 0;} } var values = [0,1,5,10,15]; values.sort(compare); alert(values); //15,10,5,1,0
concat()方法
这个方法会创建当前数组一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新数组。没有传递参数的情况系 ,它只是复制当前数组并返回副本。
var color = ["red","green","blue"];var color2 = color.concat("yellow",["black","gray"]);alert(color2); //red,green,blue,yellow,black,gray
slice()方法
这个方法可以接受一或两个参数,即要返回项的起始和结束位置。在只有一个参数的情况下,slice()方法返回从该参数指定位置开始到当前数组末尾的所有项。如果有两个参数,返回起始和结束位置之间的项(不包括结束位置的项),slice()方法不会影响原始数组。
var color = ["red","green","blue"]; var color2 = color.slice(1); var color3 = color.slice(0,2); alert(color2); //green,blue alert(color3); //red,green alert(color); //red,green,blue
splice()方法
有很多种用法,主要用途是向数组的中部插入项。
-删除:指定2个参数,要删除的第一项的位置,要删除的项数。
var color = ["red","green","blue"]; var color2 = color.splice(0,1); alert(color2); //red alert(color); //green,blue
-插入:指定3个参数,起始位置,0(要删除的项数),要插入的项。
var color = ["red","green","blue"]; var color2 = color.splice(1,0,"yellow","pink","black"); //在位置1前插入 alert(color2); //没有删除项,所以返回一个空数组 alert(color); //red,yellow,pink,black,green,blue
-替换:指定3个参数,起始位置,要删除的项,要插入的项。
var color = ["red","green","blue"]; var color2 = color.splice(1,2,"yellow","pink","black"); alert(color2); //green,blue alert(color); //red,yellow,pink,black
indexOf()方法 和 lastIndexOf()方法
这两个方法从接收两个参数:要查找的项,表示查找起点位置的索引(可选)。indexOf()方法从数组的开头向后查找,lastIndexOf()方法则从数组的末尾向前查找。
这两个方法都返回要查找的项在数组中的位置,没找到的情况下返回-1.
var color = ["red","green","blue"];alert(color.indexOf("green")); //1 alert(color.indexOf("green",2)) //-1 找不到,返回-1alert(color.lastIndexOf("red")); //0 alert(color.lastIndexOf("green",0)) //-1
迭代方法:ECMAScript5为数组定义了5个迭代方法。每个方法都接收两个参数:要在每一项上运行的函数,运行该函数的作用域对象(可选)
而传入这些方法中的函数会接收三个参数:数组项的值,该项下数组中的位置,数组对象本身
every():检测数组中的每一项是否符合条件,每一项都返回true,则返回true
var num = [1,2,3,4,5]; var result = num.every(function(item,index,array){return(item > 0); }); alert(result); //true
some():检测数组中的某一项是否符合条件,只要某一项返回true,则返回true
var num = [1,2,3,4,5]; var result = num.some(function(item,index,array){return(item > 4); }); alert(result); //true
filter():筛选出数组中符合条件的项,即返回true的项,返回这些项组成的新数组
var num = [1,2,3,4,5]; var result = num.filter(function(item,index,array){return(item > 2); }); alert(result); //3,4,5
map():对数组的每一项运行传入的函数,对应项得出的结果产生一个新数组
var num = [1,2,3,4,5]; var result = num.map(function(item,index,array){return (item * 2); }); alert(result); //2,4,6,8,10
forEach():对数组中的每一项运行传入的函数。没有返回值,本质上与使用for循环迭代数组一样
var num = [1,2,3,4,5]; var result = num.forEach(function(item,index,array){return (item); }); alert(result); //undefined
两个缩小数组的方法:reduce() 和 reduceRight()方法
这两个方法都会迭代数组的所有项,然后构建一个最终返回的值。reduce()方法从数组的第一项开始,逐个遍历到最后,reduceRight()方法则从数组最后一项开始往前遍历到第一项。
这两个方法都接收两个参数:一个在每一项调用的函数,作为缩小基础的初始值(可选)
调用的函数接收4个参数:前一个值,当前值,项的索引,数组对象
var num = [1,2,3,4,5]; var result = num.reduce(function(prev,cur,index,array){return (prev*cur); }); alert(result); //120 =1*2*3*4*5
reduceRight()的作用类似,不过方向相反而已。
转载于:https://www.cnblogs.com/afighter/p/5447995.html
5.2 Array类型相关推荐
- php 判断类型array,判断一个变量是数组Array类型的方法_javascript技巧
在很多时候,我们都需要对一个变量进行数组类型的判断.JavaScript中如何判断一个变量是数组Array类型呢?我最近研究了一下,并分享给大家,希望能对大家有所帮助. JavaScript中检测对象 ...
- JavaScript面向对象编程——Array类型
概述 一维数组 数组是一个有序的数据集合,可以通过数组名称和索引进行访问.JavaScript中并没有明确的数组数据类型. 二维数组 数组是可以嵌套的,这就意味着一个数组可以作为一个袁旭被包含在另一个 ...
- JS引用类型(2)——Array类型
[2]Array类型 ECMAScript数组的每一项可以保存任何类型的数据,并且大小是可以动态调整的,即可以随着数据的添加自动增长以容纳新增数据. (1)创建数组 1>使用Array构造函数 ...
- 使用反射操作Array类型
使用反射操作Array类型: a): Class<?> classType = Class.forName("java.lang.String"); Object ar ...
- 将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法(亲测)
在用pandas包和numpy包对数据进行分析和计算时,经常用到DataFrame和array类型的数据.在对DataFrame类型的数据进行处理时,需要将其转换成array类型,是以下列出了三种转换 ...
- 【js实例】Array类型的9个数组方法,Date类型的41个日期方法,Function类型
前文提要:[js实例]js中的5种基本数据类型和9种操作符 Array类型的9个数组方法 Array中有9个数组方法: 1.检测数组 2.转换方法 3.栈方法 4.队列方法 5.冲排序方法 6.操作方 ...
- cjson 对象是json数组型结构体_C语言 - cJSON解析特定格式 含有数组array类型的数据...
在ESP32中使用了cJSON库,发现很好用.最近服务器端的JSON格式越来越多样,还是有些注意点,需要做下笔记记录下来. cJSON *MAC_arry = cJSON_GetObjectItem( ...
- PHP中的Array类型其实是Hashtable
PHP中的Array类型其实是Hashtable. 转载于:https://www.cnblogs.com/npk19195global/p/4502879.html
- oracle 参数类型 存储过程 获取_oracle Array类型作为参数传入函数(存储过程) 大字符串参数解决方案...
1. 创建自定义的类型.由于Oracle没有提供现成的array类型,这里用table类型来模拟. CREATE OR REPLACE TYPE varchar_array is Table OF v ...
- python array类型取特定值
刷Python小屋的时候连续遇到五六道题关于--求array类型二维数组下元素中数值等于特定值的整数之和,这类的问题,整理一下. 传统方法:用for循环来遍历,使用if取特定值 但是这样效率比较低,( ...
最新文章
- 如何修炼成某一领域的高手
- 深度学习的数学 (1)基本概念
- 修改RAC VIP IP
- 【渝粤题库】陕西师范大学209006教育政策与法规作业(高起专、高起本)
- Python Twisted 介绍
- 遍历进程链表,打印pcb相关字段的内核模块
- python canny算法_Python 实现 Canny 边缘检测算法
- linux的系统监视器图片_Linux中一个高效的资源监控器Bpytop
- Linux下 PHP 安装ioncube扩展
- Luzj's ZTE Win版 终于开发完成
- 网页保存到mysql数据库_把网页数据保存到数据库
- 祝大家2019新春快乐
- Hadoop-HDFS可靠性
- php动态效果,jquery+php实现动态数字显示效果
- 深交所股票交易接口的概述
- ArcGIS Server 服务启动停止解决方法
- KMP算法中next数组到底有什么深意
- 【我想对策划说的事】-- 入职dy一年后被邀请召开的扯淡分享会讲稿
- 扩展正则表达式之加号
- 爬取在行平台数据(1)——动态加载页面分析