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;
}
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;
}
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子
- JavaScript 各种遍历方式详解