您的位置:首页 > 理论基础 > 数据结构算法

javascript 引用类型 - Array与数据结构和重排序

2016-07-21 15:42 274 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript