ECMAScript 和其他语言一样,也是有类似数据结构的方法和行为,可以利用数组的下面几个方法,可以像数据结构一样使用数组 。
unshift() 方法可以接受任意参数,把他们逐个添加到数组前端,并返回修改后的数值长度。
push()方法可以接受任意参数,把他们逐个添加到数组末尾,并返回修改后的数值长度。
shift()方法从数组前端移除最先的一项,减少数组的length值,然后返回移除项。
pop()方法从数组末尾移除最后一项,减少数组的length值,然后返回移除的项。
栈方法
数据可以表现得像栈一样(后进先出),可以限制插入和删除项的数据结构。在栈中项的插入(叫做推入)和移除(叫做弹出),只发生在一个位置--栈的顶部。所以ECMAScript为数组专门提供了push()和pop()方法,实现类似栈的行为。
队列方法
队列的数据结构的访问规则是先进先出,在队列的列表的末端添加项,从列表的前端移除项。可以结合push()和sthift()方法,可以像队列一样使用数组。
重排序
默认数组定义后,会按照定义的顺序排序,也可以用两个重排序的方法排序:reverse() 和sort()。通常情况下,reverse() 和sort()方法会调用每个数组项的toString()转型方法,然后比较得到的字符串,以确定如何排序。
关于这个,需要探讨javascript 中的数组排序函数sort()和reverse(),因为官方说明,这两个排序函数是可以带有参数的,而且这个参数必须是个函数。
function compare(v1,v2){
if(v1<v2){
return -1;
}else if(v1>v2){
return 1;
}else{
return 0;
}
}
var valuees=[0,1,10,15,5,30];
valuees.sort(compare); // 返回的结果[0, 1, 5, 10, 15, 30]
要说明一下,排序算法是离不开
冒泡算法的,这里同样是使用了冒泡算法。逐个比较两个项,如果返回-1,则交换升级位置。其实上面例子的方法可以用一个跟个简单的比较函数来表示。就是
这个函数只要返回第二个值减去第一个值。
function compare(v1,v2){
return v2-v1;
}