JavaScript高级程序设计(第三版)学习笔记1~5章(3)

对arr.length进行赋值,将会动态改表数组大小,赋值大于原数组大小将扩大数组,新增项获得undefined的值,小于原数组大小,将保留前面的数值,多的数值将被移除

数组检测:

对于只有一个全局作用域而言,instanceof可以很方便的检测某个变量是否是数组,但对于多个框架的网页而言,则存在多个不同的版本的Array构造函数,instanceof将不能够满足要求,为此引入Array.isArray(value)方法,这个方法可以最终确定某个值是否是数组,而不管是哪个框架构造的。支持的浏览器为:IE9+,Firefox4+,Safari5+,Opera10.5+,chrome。

转换方法:

调用数组的toString()方法,将会返回由数组中每个值的字符串形式拼接而成的以逗号分隔的字符串,valueOf()方法返回的还是数组,与toString()是一样的结果

toLocaleString()返回的通常与toString()和valueOf()返回结果是一样的,但并不总是如此,使用toLocaleString()方法,则会去调用数组中每一项的toLocaleString()方法,而不是toString()方法。

join方法

join方法接受一个参数,即作为分隔符的字符串

例:

var arr = [“one”,”two”]; arr.join(“|”); //one|two

如果不给join传递参数,则返回以逗号作为分隔的字符串

注:如果数组中某一项的值为null或者undefined,则调用join,toLocaleString(),toString(),valueOf()返回的结果则使用空字符串表示

数组的栈方法

var arr = new Array();

arr.push(),在数组末尾添加数据,可以传入多个参数,并返回修改后的数组长度

arr.pop(),从数组末尾移除最后一个数据,减少数组的length值,并返回该项的值

数组的队列方法

var arr = new array();

arr.shift(),移除数组的第一项,减少数组的length值,并返回该项的值

arr.unshift(),在数组的前端添加任意个项,并返回修改后的数组长度

使用shift和push结合,可以模拟队列操作

使用unshift和pop结合,可以从相反方向模拟队列

重排序方法:

var arr = new Array();

arr.reverse(),翻转数组的项,即首尾顺序调转

arr.sort(),默认情况下升序排列,注:排列顺序是数组值转换成字符串之后的升序排列,通常不是所需要的排序

sort方法可以接受一个比较函数作为参数,实现所需的排序方法,方法返回负数则按升序排列,返回整数则按降序排列,注:可以适应大多数排序情况

操作方法:

var arr = new Array();

arr.concat(),进行数组连接,并返回连接后的数组,可传入多个参数

arr.slice(),可以基于当前数组中的一个或多个值创建一个新数组返回,接受一个或两个参数,即返回原数组的起始位置和结束位置之间的所有项,不包含结束位置的项,只有一个参数则返回从该参数指定位置到末尾的所有项。

注:如果参数是负数,则会将数组的长度加上这个负数得到的结果来确定位置。结束位置小于起始位置则返回空

splice()方法:

删除:指定两个参数,要删除的起始位置和要删除的项数,例:splice(0,2);

插入:指定三个参数,起始位置,要删除的项数(0),要插入的项,插入的项可以是多个项

例:splice(2,0,”red”,”green”); //从位置2插入red,green

替换:与插入相同,第二个参数有变化,起始位置,要删除的项数,要插入的项,插入的项数可以是多个项

位置方法:

indexOf(),lastIndexOf(),都接收两个参数,要查找的项和查找起点位置索引indexOf从数组头开始查找,lastIndexOf从数组末尾开始查找。若没有找到则返回-1.

注:查找时进行的比较使用的是全等操作符,就像使用“===”一样

迭代方法:

ECMAScript5定义了5个迭代方法,全部接收两个参数:每一项上运行的函数,运行该函数的作用域对象—影响this的值。函数则接收三个参数:数组项的值,该项在数组中的位置,和数组对象本身

var arr = new Array();

every(),对数组中每一项运行给定函数,每一项都返回true,则返回true

filter(),对数组每一项运行给定函数,返回该执行函数返回true的项组成的数组

例:

var num = [1,2,3,4,5,4,3,2,1]; var filter = num.filter(function(item,index,array){ return item > 2; }); //[3,4,5,4,3]

forEach(),对数组中每一项运行给定函数,没有返回值,本质上与for循环迭代数组一致

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

some(),对数组中每一项运行给定函数,只要任一项的函数结果是true,则返回true

注:以上所有函数并不会对数组进行修改

例:

var num = [1,2,3,4,5,4,3,2,1]; var mapResult = num.map(function(item,index,array(){ return item * 2; }); //以上代码返回数组每一项都乘2以后的数组

归并方法:

reduce()和reduceRight()

两个函数都会迭代数组的所有项,然后构建一个最终返回的值,其中reduce从数组第一项开始,reduceRight从数组最后一项开始

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wgyfdp.html