Array类型中的检测数组,转换方法,栈方法,队列方法

2017-8-24 17:12:02 3,776 views

检测数组

对于一个网页或者一个全局作用域,用instanceof操作符就能得到某个对象是不是数组
if( value instanceof Array){
}
instanceof操作符问题在于,它假定只有一个全局执行环境。如果网页中包含多个框架,那么实际上就存在2个以上的全局执行环境,从而存在2个以上版本的Array构造函数。如果你从一个框架向另一个框架传入一个数组,那么传入的数组与在第二个框架中原生创建的数组分别具有各自不同的构造函数。
为了解决这个问题,es5新增了Array.isArray()方法。这个方法的目的是最终确定某个值是不是数组,而不管它在哪个全局执行环境创建的。
if( Array.isArray(value)){
}
ie9+才兼容这个方法

转换方法

所有对象都具有toLocaleString(),toString(),valueOf()方法
在数组对象调用
//toString()方法,会把数组转换为字符串,并返回结果
//valueOf():返回数组对象的原始值
/toLocaleString():/将数组转换为本地数组并返回结果
var colors=["blue","green","red"];
console.log(colors.valueOf());//数组对象
console.log(colors.toString());//red,blue,green
console.log(colors.toLocaleString());//red,blue,green
alert(colors.valueOf());//red,blue,green
alert(colors.toString());//red,blue,green
alert(colors.toLocaleString());//red,blue,green
//由于alert()要接收字符串参数,它会在后台调用toString()方法,
所以与显示调用toString()相同

 

栈方法

es提供了一种让数组的行为类似于其他数据结构的方法,具体来说,数组可以表现得像栈一样,
栈:是一种可以限制插入和删除项的数据结构 ,lifo(后进先出)最新添加的数据最早被移除,栈中项的插入(推入)和移除(弹出)只发生在栈的顶部
es提供了Array.prototype.push()和Array.prototype.pop()方法,实现类似栈的方法。
push()可以接收任意数量的参数,逐个添加到数组末尾,并返回修改后的数组长度
pop()从数组末尾移除最后一项,减少数组长度,返回被移除的项
var colors=Array();
var count=colors.push("red","green");//推入2项
alert(count);//2
count=colors.push("black");
alert(count);//3
var item=colors.pop();//取得最后一项
alert(item);//black
alert(colors.length);//2

 

队列方法

队列的数据结构的访问顺序是fifo(先进先出)
队列在列表的末端添加项,从列表的前端移除项。
push()是向数组末端添加项的方法,
shift()能够移除数组中的第一项并返回该项,同时数组长度减1
var colors=Array();
var count=colors.push("red","green");//推入2项
alert(count);//2
count=colors.push("black");
alert(count);//3
var item=colors.shift();//取得第一项
alert(item);//red
alert(colors.length);//2
unshift()在数组前端添加任意个项并返回数组的长度
unshift()和pop()可以模拟反向队列

总结:

Array.prototype.push()可以接收任意数量的参数,逐个添加到数组末尾,并返回修改后的数组长度
Array.prototype.pop()从数组末尾移除最后一项,减少数组长度,返回被移除的项
Array.prototype.shift()能够移除数组中的第一项并返回该项,同时数组长度减1
Array.prototype.unshift()在数组前端添加任意个项并返回数组的长度
1

分享到微信朋友圈

打开微信,点击底部的“发现”,
使用“扫一扫”即可将网页分享至朋友圈。