JavaScript中强大的Array类型

JavaScript中的Array类型极其强大,有(模拟的)栈/队列方法,重排序方法,操作方法,迭代方法,位置方法和归并方法。

Array的一些基本问题

创建数组的两种方式
  • 使用构造函数
  • 使用字面量

当使用构造函数构造数组时,可传入(数组长度/数组的项)。

//使用构造函数
var ins1 = new Array(2);//创建一个长度为2的数组
var ins2 = new Array('1',2);//创建一个['1',2]
//使用字面量
var ins3 = ['1',2];




如何检测数组类型
  • instanceof
  • Array.isArray()

instanceof的问题在于当一个页面中有多个框架时,各个框架中的Array构造函数并不相同,因此框架1中的数组实例也就不存在于框架2中Array构造函数的原型链中,这样就没法使用instanceof判断。
而Array.isArray()可以很好的判断(如果浏览器支持该方法)。

length属性的非只读性

每一个数组实例都具有一个length属性来记录数组的长度,它具有一个很大的特点,即可以进行修改,你可以通过修改它来增加或者删除元素。

var ins = [1,2,3];
ins.length = 2; //ins = [1,2];
ins[length] = 3; //ins = [1,2,3];




数组中模拟的栈/队列方法

在数组中使用如下方法可模拟栈。

pop() : 删除并返回尾部元素,
push(ele) : 在尾部加入新元素并返回修改后的长度。

在数组中使用如下方法可以模拟队列。

push(ele) : 在尾部加入新元素并返回修改后的长度,
shift() : 在数组头部删除元素并返回该元素。

在数组中使用如下方法可以模拟反向队列。

pop() : 删除并返回尾部元素,
unshift(ele) : 在数组头部加入新元素并返回修改后的长度。

注意:unshift 和 pop 的参数均可为多个。

数组中的重排序方法

reverse

reverse方法用于将当前的数组反转,此操作会改变原数组。

sort

当不对sort传参而直接调用时,此方法将数组每一项转换为字符串,按照由小到大的顺序进行排序。

var ins = [3,1,10];
ins.sort();//[1,10,3];



还可以对sort传入一个函数作为参数,函数中有两个默认的参数。

function func(value1,value2){
    if(value1 > value2){
        return 1; //若将value2排在前面,返回正数。
    }else if(value1 < value2){
        return -1; //若将value1排在前面,返回负数。
    }else{
        return 0; //两元素大小相等。
    }
var ins = [3,1,10];
ins.sort(func);//[1,3,10]




数组中的操作方法

concat

此方法从现有数组上创建副本,然后将传入的参数加入副本(若参数为数组,将数组每一项加入;否则直接加入),最后返回副本。这意味着不会改变原数组。

slice

slice对数组进行切割,返回切割所得的副本,同样不会影响原数组。
slice的第一个参数为起始位置,第二个(可选)参数为结束位置。

splice

splice(起始位置,删除的项数,插入的项*)

此方法会改变原数组,它的返回值是被删除项组成的数组。

var ins = [1,2,3,4];
ins.splice(1,1); //[1,3,4]
ins.splice(0,0,5,6)//[5,6,1,3,4]


位置方法

indexOf(ele,start?)
lastIndexOf(ele,start?)

迭代方法

迭代方法( 函数 (数组项值,索引,数组本身),作用域?)

包括:

  • every:当每一项都返回true时,返回true。
  • some:包含任意一项返回true的项时,返回true。
  • forEach:对每一项执行指定的操作,无返回值。
  • map:返回数组,它的项为对数组每一项执行函数后的返回值。
  • filter:返回数组,它的项为原数组中执行函数返回true的项。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值