浅谈 JavaScript 中 Array 类型的方法使用
前言:Array 类型是 JavaScript 中除了 Object 类型以外最常用的类型。
一、创建数组
JavaScript 中的数组与其他语言中的数组有着很大的区别。例如Java、PHP等语言中的数组都是一组有序的数据,而 JS 中的数组可以包含多种类型的数据。
创建方式:
1. Array 构造函数定义数组 ---------- var 数组名 = new Array();
var colors = new Array(20); //直接传递数组数量,length 值为20,即创建一个包含20项的数组。
var colors = new Array("red","blue","green"); //传递数组中包含的项,即创建一个包含3个字符串的数组。
var colors = Array(20); //也可以省略 new 操作符,结果相同。
2. 字面量方式定义数组 ---------- var 数组名 = [ ];
var values = []; //定义了一个空数组
var values = [1,2,3] //定义了一个包含3项的数组
JS 中的数组可以随着数据的增加调整大小,例如:
var colors = ["blue","green","black"]; //创建一个包含三个字符串的数组
colors[colors.length] = "brown"; //(在位置3)添加一个字符串 colors[99] = "red"; //(在位置99)添加一个字符串 ,但位置4到98之间实际上是不存在,返回的都是undefined
console.log(colors.length); //
二、检测数组
自从 ECMAscript3 做出规定后,就出现了一个经典问题 ------- 确立某个对象是不是数组。
1. 对于一个网页或者一个全局作用域内,使用 instanceof 操作符。
* 但如果网页中包含多个框架,那么就存在两个或以上不同的全局执行环境,这种方法就不适用。
2.判断某个值是不是数组,不考虑是在哪个全局作用域内创建的,使用 Array.isArray() 方法。
三、转换方法
所有对象都有 toString() 方法、toLocalString()方法、valueOf()方法。
toString() :将数组中的值转换成用逗号分隔的字符串。
toLocalString():将数组中的值转换成本地数组。
valueOf():返回数组的原始值。
四、栈方法
JS 的数组中也提供了一种让数组的行为类似于其他数据结构的方法,也就是数组可以表现的像栈一样。
栈是一种LIFO(后进先出)的数据结构,可以限制数据的插入和移除。而数据的插入和移除都发生在栈的顶部。
ECMAscript 为数组提供了 push()和 pop()方法。
push() 方法可以接受任意数量的参数,并将他们添加至数组的末尾,并返回修改后的数组长度。
pop() 方法可以从数组的末尾移除一项,减少 length 值,并返回移除的项。
五、队列方法
队列数据结构的访问规则是 FIFO(先进先出),队列在列表的末端添加项,在列表的前端移除项。
由于 push()方法是从数据的末端添加项,因此只需一个从数据的前端取得项的方法即可,而实现这一操作的方法就是shift()方法。
此外,还有一种方法 unshift(),是从数组的前端添加项并返回新数组的长度。
unshift()和 pop()方法同时使用,可以从相反的方向模拟队列,即从数组的前端添加项,从数组的末端移除项。
六、 重排序方法
顾名思义,就是对数组进行重新排序,且数组中已经存在这样的两个方法,即 reverse()方法和 sort()方法。
reverse()方法是直接反转数组的顺序,但始终是不太灵活的。
sort()方法则会调用每个数组项的 toString()转换方法,比较转换来的字符串进行排序,但也不是最佳方案,比如转换成字符串的“5”就比“10”大,也不符合常理。
以上方法单独使用都不是最优解,因此可以用 sort()方法接收一个比较函数做为参数,以便于指定哪个值在前哪个值在后。
七、操作方法
ECMAscript 为数组中已存在的项提供了很对操作方法。
1. contact():为当前数组创建一个副本。如果给 contact 方法传递参数,将接收到的参数添加至数组的末尾,最后返回一个新数组。(原来的数组保持不变)
如果没有传递参数,则只复制数组并返回副本。
2. slice():基于当前数组的一项或多项创建一个新数组。语法:slice(返回项起始位置项,结束位置(但不包含结束位置的项));如果只有一个参数,则返回该项到数组末尾的所有项。(原数组不变)
!!!如果传入的参数中有一个负数,则用数组长度加上该数来确定相应的位置;如果结束位置小于起始位置,则返回空数组。
3. splice():在数组的中部插入项。
• 删除:删除任意数量的数 ------ 数组名.splice(删除的起始项的索引位置,要删除的项数)
• 插入:从指定位置插入项 ------ 数组名.splice(起始索引位置,0(要删除的项数),要插入的项)
• 替换:从指定位置插入项 ------ 数组名.splice(起始索引位置,要删除的项数,要插入的项)
八、位置方法
用于返回要查找的项在数组中的位置,或者在没找到的情况下返回-1。
indexof():从数组的开头(位置0)向后查找。
lastIndexOf():从数组的末尾开始先前查找。
浅谈 JavaScript 中 Array 类型的方法使用的更多相关文章
- 浅谈JavaScript中的string拥有方法的原因
我们都知道,JavaScript数据类型分两大类,基本类型(或者称原始类型)和引用类型. 基本类型的值是保存在栈内存中的简单数据段,它们是按值访问的.JS中有五种基本类型:Undefined.Null ...
- 浅谈JavaScript中的null和undefined
浅谈JavaScript中的null和undefined null null是JavaScript中的关键字,表示一个特殊值,常用来描述"空值". 对null进行typeof类型运 ...
- 浅谈JavaScript中的正则表达式(适用初学者观看)
浅谈JavaScript中的正则表达式 1.什么是正则表达式(RegExp)? 官方定义: 正则表达式是一种特殊的字符串模式,用于匹配一组字符串,就好比用模具做产品,而正则就是这个模具,定义一种规则去 ...
- 浅谈JavaScript中的闭包
浅谈JavaScript中的闭包 在JavaScript中,闭包是指这样一个函数:它有权访问另一个函数作用域中的变量. 创建一个闭包的常用的方式:在一个函数内部创建另一个函数. 比如: functio ...
- 浅谈JavaScript中继承的实现
谈到js中的面向对象编程,都有一个共同点,选择原型属性还是构造函数,两者各有利弊,而就片面的从js的对象创建以及继承的实现两个方面来说,官方所推荐的是两个相结合,各尽其责,各取其长,在前面的例子中,我 ...
- JavaScript中Array类型方法总结
Array类型是ECMAScript中最常用的类型之一,ECMAScript中的数组与其他多数语言中的数组有着相当大的区别.ECMAScript数组的每一项可以保存任何类型的数据.这里总结了数组类型的 ...
- 浅谈JavaScript中的继承
引言 在JavaScript中,实现继承的主要方式是通过原型链技术.这一篇文章我们就通过介绍JavaScript中实现继承的几种方式来慢慢领会JavaScript中继承实现的点点滴滴. 原型链介绍 原 ...
- 浅谈JavaScript中的内存管理
一门语言的内存存储方式是我们学习他必须要了解的,接下来让我浅谈一下自己对他的认识. 首先说,JavaScript中的变量包含两种两种类型: 1)值类型或基本类型:undefined.null.numb ...
- 浅谈JavaScript中的变量、参数、作用域和作用域链
基本类型和引用类型 在JavaScript中有两种数据类型值.基本类型值和引用类型值.基本类型值指的是简单的数据段,而引用类型值指的是可能由多个值构成的对象.在JavaScript中有5种基本数据类型 ...
随机推荐
- Angular基本概念理解
一些符号的概念 #nzTable 模块变量 [] 输入(绑定值) () 输出(绑定事件) 补充说明: []是控件监控外部变化 ()是监听事件,交给外部变化内部值的权利 二者都是"监听&quo ...
- WCF配置文件详解
今天来看看WCF的配置方法. 上图整理了服务配置过程中所用到的基本的元素,大致的步骤主要是首先要在调用服务的程序集中添加服务的一个引用,然后添加一个service并指定服务的名称.终结点,如果添加了b ...
- AngularJS ng-if使用
示例中,根据ng-if指令显示不同任务状态,以及判断任务是否可以操作 <div ng-app="NgifDemoApp" ng-controller="NgifDe ...
- 关于Android 7.0更新后调用系统相机及电筒问题
android升级到7.0后对权限又做了一个更新即不允许出现以file://的形式调用隐式APP,需要用共享文件的形式:content:// URI 因为系统相机是提供的共享 Provider , C ...
- windows下服务程序相关(别人提供的5种封装使用)
作者: daodaoliang 版本: V 0.0.1 日期: 2017年11月25日 1. Windows Service 编程实现 在windows平台下面编写 服务程序 免不了要去查看微软的开发 ...
- Win10《芒果TV - Preview》官方指定预览版 - 重要使用注意事项
Win10<芒果TV - Preview>官方指定预览版,最新的改进和功能更新将会此版本优先体验. 重要使用注意事项: 1.因为方便过审核,默认将会员相关的操作提示简化: 2.使用中务必手 ...
- 队列读取器代理 遇到错误 Row handle is invalid
原文:队列读取器代理 遇到错误 Row handle is invalid 今天测试在发布中更改表名称,在发布数据库更改后重新发布这个表. 但是原来的表在订阅没有删除,不小心插入数据到原表中,队列读取 ...
- 领域驱动设计(DDD)的实践经验分享之持久化透明
原文:领域驱动设计(DDD)的实践经验分享之持久化透明 前一篇文章中,我谈到了领域驱动设计中,关于ORM工具该如何使用的问题.谈了很多我心里的想法,大家也对我的观点做了一些回复,或多或少让我深深感觉到 ...
- Windows RabbitMQ 安装
操作系统 Win10 企业版 目标: 在win10上安装RabbitMQ 安装步骤 1.安装RabbitMQ需要先安装Erlang语言开发包,下载地址:http://www.erlang.org/d ...
- Delphi中用MessageBox()API函数做倒计时对话框(使用Hook安装CBTHookCallback,计时器更改文字,SetWindowText API真正修改文字,引用未知函数)good
API有隐藏的MessageBoxTimeOut函数可以做计时对话框,缺点是不能显示还剩下多少秒关闭. const IDTIMEDOUT = 32000; function MessageBoxTim ...