位置: 编程技术 - 正文

JavaScript:Array类型全面解析

编辑:rootadmin

推荐整理分享JavaScript:Array类型全面解析,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

JavaScript中的数组类型与其他语言中的数组有着很大的区别。JavaScript中的每一项可以保存任何类型的数据。而且,JavaScript数组的大小是可以动态调整的,可以随着数据的添加自动增长以容纳新增数据。

创建数组的基本形式有两种。

1.Array构造函数

如果预先知道要保存的项目数量,也可以给构造函数传递该数量,该数量会自动变成length属性的值。

也可以向Array构造函数传递数组中应该包含的项。

在创建数组时可以省略new操作符:

2.数组字面量表示法

数组字面量表示法由一对包含数组项的方括号表示,多个数组项之间以逗号隔开,如下:

在读取和设置数组的值时,要使用方括号并提供相应值的基于0(基于0就是从0开始计数,第一项为0,第二项为1,以此类推)的数字索引,如下所示:

数组的项数保存在length属性中,它不是只读的。因此,可以通过设置length属性,可以从数组的末尾移除项或者向数组中添加新项。

利用length的这一属性可以在数组末尾添加新项:

1. 检测数组

ECMAScript5新增了Array.isArray()方法,作用就是确定某个值到底是不是数组,而不管它是哪个全局执行环境中创建的。用法如下:

2. 转换方法

所有对象都具有toLocaleString()、toString()和valueOf()方法。其中调用数组的toString()方法会返回由数组中的每个值的字符串形式拼接而成的一个以逗号分隔的字符串。例如:

说明:由于alert()需要接收字符串参数,它会在后台调用toString()方法,因此会得到直接调用toString()方法相同的结果。

另外,toLocaleString()方法经常也会返回与toString()和valueOf()相同的值,不同的是,为了取得每一项的值,调用的是每一项的toLocaleString()方法,而不是toString()方法。例如:

结果显示第一行和第二行调用的是toString方法,第三行调用的是toLocaleString方法。

数组继承的toLocaleString()、toString()和valueOf()方法,在默认情况下,都会以逗号分隔字符串的形式返回数组项。通过join()方法,则可以使用不同的字符来分割字符串,然后返回包含所有数组项的字符串。

3. 栈方法

栈是一种后进先出(LIFO)的数据结构,栈中数据项的插入和移除只能发生在栈的顶部。JavaScript数组提供了push()和pop()方法用于实现类似于栈的行为。

push()方法

可以接收任意数量的参数,把它们添加到数组的末尾,并修改数组的长度。

从上面的例子可以看出,push()方法返回的插入的项数。

pop()方法

从数组的末尾移除最后一项,减少数组的长度,返回移除的项。

4. 队列方法

队列的数据结构的访问规则是先进先出(FIFO),即从队列的末端添加项,从队列的前端移除项。

shift()方法

JavaScript中提供了shift()方法,移除数组中的第一项并返回该项,同时修改数组的length属性。

unshift()方法

JavaScript 还提供了unshift()方法,能在数组前端添加任意个项并返回新数组的长度。

观察发现,如果一次unshift()中有多项,它会将这些项按照顺序插入到数组中,即第一个参数插入最前面。像上面的例子中那样,第一次插入“a”,第二次在数组的最前面插入“b”,第三次时有多项,但是顺序是c在前,d在后。

JavaScript:Array类型全面解析

5. 重排序方法

数组中提供了两个直接用来重排序的方法。

reverse()方法

reverse()方法会反转数组项的顺序。

sort()方法

在默认情况下,sort()方法按升序排列数组项。为了实现排序,sort()方法会调用每个数组项的toString()转型方法,然后比较得到的字符串。因此,sort()方法比较的是字符串。

然而,我们可以说这种排序基本是毫无意义的,我们需要的是对数值进行排序。sort()方法可以接收一个比较函数作为参数,以便指定排序规则。

比较函数接收两个参数,如果第一个参数应该位于第二个参数之前则返回一个负数,如果两个参数相等则返回0,如果第一个参数位于第二个参数之后则返回一个正数。

6. 操作方法

concat()方法

可以基于当前数组中的所有项创建一个新数组。这个方法会创建一个当前数组的副本,然后将参数添加到副本的末尾,然后返回新构建的数组。如果传递给concat()方法的是一个或多个数组,则会将该数组中的每一项添加到数组中。

slice()方法

基于当前数组中的一或多个项创建一个新数组。slice()方法可以接收一个或两个参数,即要返回项的起始和结束位置。当只要一个参数,返回从起始项到数组末尾的所有项,当有两个参数时,返回起始位置和结束位置之间的项(不包括结束项)。slice()方法不会影响原数组。

splice()方法

splice()方法主要用于向数组的中部插入项,使用方式有3种:

&#; 删除 可以删除任意数量的项,指定2个参数:要删除的第一项和删除的项数,如:splice(1,3)会删除数组中的第2、3、4项

&#; 插入 可以向指定位置插入任意数量的项。指定3个参数:起始位置、0(要删除的项数)、要插入的项

&#; 替换 可以替换指定位置的项。指定3个参数:起始位置、要删除的项、要插入的任意项。

7. 位置方法

JavaScript中有两个位置方法:indexOf()方法和lastIndexOf()方法。这两个方法都接收两个参数:要查找的项和(可选)表示查找起点位置的索引。

indexOf()方法表示从数组的开头向后查找,lastIndexOf()则从数组的末尾开始向前查找。它们都返回查找的项在数组中的位置,如果没有找到则返回-1。在第一个参数与数组中的每一项比较时使用的是全等。

8. 迭代方法

JavaScript为数组提供了5个迭代方法。每个方法接收两个参数:要在每一项上运行的函数和(可选)运行该函数的作用域对象——影响this的值。需要传入的参数:数组项的值、该项在数组中的位置和数组对象本身。

&#;every(): 对数组中的每一项运行给定函数,如果该行数对每一项都返回true,则返回true

&#;filter(): 对数组中的每一项运行给定函数,返回会返回true的项组成的数组

&#;foreEach(): 对数组中的每一项运行给定函数,没有返回值

&#;map(): 对数组中的每一项运行给定函数,返回每次函数调用的结果组成的函数。

&#;some(): 对数组中的每一项运行给定函数,如果任一项返回true,则函数返回true

以上方法都不会修改数组中包含的值。

9. 归并方法

JavaScript中有两个归并数组的方法:reduce()和reduceRight()。这两个方法都会迭代数组的所有项,然后构建一个最终返回的值。其中,reduce()方法从数组第一项开始,而reduceRight()则从数组的最后一项开始。

它们都可以接收两个参数:一个在每一项上调用的函数和(可选)作为归并基础的初始值。传递给reduce()和reduceRight()的函数接收4个参数:前一个值、当前值、项的索引和数组对象。这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数就是数组的第二项。

第一次执行回调函数,prev是1,cur是2。第二次,prev是3(1+2),cur是3(数组第三项的值),知道每一项都访问到。

reduceRight()的作用类似,只不过方向相反而已。

以上这篇JavaScript:Array类型全面解析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持积木网。

前端js文件合并的三种方式推荐 最近在思考前端js文件该如何合并,当然不包括不能合并文件,而是我们能合并的文件,想了想应该也只有三种方式。三个方式如下:1.一个大文件,所

JavaScript 数组some()和filter()的用法及区别 some方法array1.some(callbackfn[,thisArg])对数组array1中的每个元素调用回调函数callbackfn,当回调函数返回true或者遍历完所有数组后,some方法终止。可选参数this

有关JavaScript中call()和apply() 的一些理解 call()方法和apply()方法,在上层应用中用的不是很多,但在底层写JS框架的时候却常常看到。然后度娘谷哥一番,也发现好多达人写出了自己的理解和笔

标签: JavaScript:Array类型全面解析

本文链接地址:https://www.jiuchutong.com/biancheng/370056.html 转载请保留说明!

上一篇:JavaScript:Date类型全面解析(javascript date函数)

下一篇:前端js文件合并的三种方式推荐(合并多个js文件)

  • 汇算清缴要调整会计分录吗
  • 资产负债表怎么看营业收入
  • 事业单位装修费用
  • 工业企业会计错账处理方法有哪些
  • 企业停产是否需要自行监测
  • 应收款抹零计入什么会计科目
  • 出售股份的印花税怎么做分录?
  • 医院计提坏账准备分录
  • 个人抬头的通讯费可以做费用吗
  • 个人投资理财需要注意什么
  • 员工工资超过多少钱要交税
  • 企业所得税期末贷方余额怎么办
  • 金融保险定义
  • 资产转让的优点
  • 个人所得税减免申请
  • 物业收租金必须要发票吗
  • 什么凭证需要审计报告
  • 公司缴纳递延所得税吗
  • 先进行税务登记还是先注册开户银行账号
  • 房屋租赁发票需要什么资料
  • 实收资本怎样入账
  • 硬盘分区的原则主要有哪些
  • 出差人员差旅费作细的说明叫什么
  • ubuntu系统怎么安装微信
  • 无法登陆wifi怎么登陆路由器
  • 解决思路怎么写
  • 月底增值税怎么计提
  • 000.exe病毒
  • 房产营销策划经典案例
  • 客户抽奖活动方案
  • 建筑劳务费发票有进项抵扣吗
  • php js
  • 残保金计入税金还是管理费用
  • php设置header参数
  • laravel5.2实现区分前后台用户登录的方法
  • 成本类账户期末余额在借方还是贷方
  • ping命令可以用来测试什么
  • 单位收到投标保证金会计分录
  • 无法报销的原因
  • 信息技术服务费税收编码
  • 新购固定资产怎么填写申报表
  • 只有发票没有合同可以做账吗
  • 无退税产品出口征税
  • 月末研发支出会结转至哪个账户
  • linux环境中使用哪些搜索命令比find更高效
  • 收到的税费返还怎么算
  • 小规模纳税人未开票收入如何申报增值税
  • 缴纳社保公积金的会计分录
  • 库存冲红是什么意思
  • 费用本期发生额怎么算
  • 哪些个体户要报残保金
  • 收到固定资产发票怎么入账
  • 一般纳税人的发票抵扣有效期多久
  • 工程异地预缴的税款可以抵机构所在地的税金吗
  • sql时间用什么数据类型
  • centos6.10安装教程
  • 如何解决windows10数据放到国外进行处理
  • Windows server 2008设置远程桌面连接的详细步骤(图文教程)
  • linux切换到home文件夹
  • fedora系统
  • freebsd怎么安装软件
  • 使用u盘安装win10
  • win10老是弹窗广告
  • win1020h2正式版
  • windows8笔记本电脑
  • linux 中断 处理
  • win7系统更新怎么关闭
  • linux安装dns软件包
  • 基于重大误解实施的民事法律行为
  • python os.path模块
  • 实现点击下箭头的方法
  • jquery绑定keyup
  • 有隐藏项怎么复制
  • jquery.validate提示错误信息位置方法
  • js模拟点击confirm
  • Sublime Text 3常用插件及安装方法
  • ca钥匙登陆不了电子税务局
  • 公对私转账怎么开票
  • 汽车车船税怎么交
  • 个人领税票需要哪些资料
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设