js数组排序
在JS中,sort方法可用于数组的排序;先来看一个例子:
var arr = [1, 2, 3, 5, 7, 78, 8, 89];
arr.sort();
console.log(arr); // [1, 2, 3, 5, 7, 78, 8, 89]
代码非常简单,上面得到的结果是从小到大的一个排序,假设要实现从大到小排序呢?这个时候就要借助函数了,见代码:
var arr = [1, 2, 3, 5, 7, 78, 8, 89];
arr.sort(function(a, b) {
return b - a
});
console.log(arr); // [89, 78, 8, 7, 5, 3, 2, 1]
OK,以上的排序方法较为简单,那么还有没有其它的方法来实现排序呢?肯定是有的,冒泡排序这个时候就排上用场了;冒泡排序的原理就是从第一项开始, 依次与数组中所有项(包括它自己)逐个进行比较, 如果当前项(当前项是每次比较之后的最大值)大于下一项, 则交换两者的位置;还是以上面数组为例,我们来用冒泡排序,见代码:
var sort = function(arr) {
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr.length - 1 - i; j++) {
var temp = 0;
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp
}
}
}
return arr;
}
var arr = [2, 5, 3, 1, 7, 8, 78, 89];
console.log(sort(arr)); // [1, 2, 3, 5, 7, 8, 78, 89]
可以看到,得到的是一个从小到大的数组;一维数组的排序很简单,那么二维数组呢?其实原理都一样,排序也非常简单,直接见一个例子:
假设有这样一个数组:var array = [[4,'dasd'],[5,'dasd'],[1,'dasd'],[2,'dasd'],[3,'dasd'],[13,'dasd'],[23,'dasd']];要求按其ID进行从小到到的排序 ,如何实现呢?见代码:
方法一,利用sort方法来实现:
var array = [[4,'dasd'],[5,'dasd'],[1,'dasd'],[2,'dasd'],[3,'dasd'],[13,'dasd'],[23,'dasd']];
array.sort(function(x, y) {
a = x[0];
b = y[0];
if (a - b > 0) {
return 1
} else if (a - b < 0) {
return -1
} else {
return 0
}
})
console.log(array);
方法二,利用冒泡排序来实现:
var sort = function(array) {
for (var i = 0; i < array.length; i++) {
for (var j = 0; j < array.length - 1 - i; j++) {
var temp = 0;
if (array[j][0] > array[j + 1][0]) {
temp = array[j][0];
array[j][0] = array[j + 1][0];
array[j + 1][0] = temp;
}
}
}
return array
}
console.log(sort(array));
两种方法得到的结果都一样,相对而言,方法一简单一些;
js数组排序的更多相关文章
- js数组排序,支持正反排序以及多维度排序
工作中遇到js数组排序问题,数组中存储的都是对象,于是就百度了下,利用别人的代码进行修改,最终完成可以倒序.反序,可以进行多维度排序的功能源码如下: /** * js数组排序 支持数字和字符串 * @ ...
- js数组排序 reverse()和sort()方法的使用
WEB前端|js数组排序reverse()和sort()方法的使用,数组中已经存在两个可以直接用来重排序的方法:reverse()和sort(). reverse()方法会对反转数组项的顺序. var ...
- JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)
本文实例总结了JS数组排序技巧.分享给大家供大家参考,具体如下: 1.冒泡排序 var temp = 0; for (var i = 0; i < array.length; i++) { fo ...
- Js数组排序函数sort()
JS实现多维数组和对象数组排序,用的其实就是原生sort()函数,语法为:arrayObject.sort(sortby)(sortby 可选.规定排序顺序.必须是函数.) 返回值为对数组的引用:请注 ...
- Js数组排序函数:sort()
原文链接:https://blog.csdn.net/qq_37936542/article/details/78979521 js原生的 sort() 排序函数使用起来很方便 语法:arrayObj ...
- js数组排序和打乱
js数组根据不同的业务需求,会要求数组有序或者无序,记录一下流传较广,通用性较强的排序和乱序方法. 数组排序: arr.sort(function(a,b){//从小到大 return a-b;[re ...
- js 数组排序和算法排序
1.算法排序 a.插入排序 var arr = [23,34,3,4,23,44,333,444]; var arrShow = (function insertionSort(array){ if( ...
- js数组排序实用方法集锦
前言: 据说程序员三个月就能忘记自己写的代码,所以最好是在有空的时候及时做些总结,记录下来,这样后边遇到类似问题的话,就可以直接先查看自己的博客了.写技术博客,对自己是一种总结,对别人,是一种参考. ...
- webAssmebly实现js数组排序 使用custom elements和Shadow DOM自定义组件
直接上码了……………… .wat源码 (module (type $t0 (func (param i32 i32))) (type $t1 (func (result i32))) (type $t ...
随机推荐
- 去HTML代码
Code: public static string NoHTML(string Htmlstring) { //删除脚本 Htmlstring = Regex.Replace(Htmlstring, ...
- C++ 必知必会:条款16 指向成员函数的指针并非指针
这一点与指向成员的指针类似,其实现可能更加复杂,因为成员函数同时还存在虚拟函数,需要动态绑定执行动作.当然这种属性是属于函数本身的,此处表达的是指针不涉及函数的属性问题. 1: class shape ...
- 转 网络IO模型:同步IO和异步IO,阻塞IO和非阻塞IO
此文章为转载,如有侵权,请联系本人.转载出处,http://blog.chinaunix.net/uid-28458801-id-4464639.html 同步(synchronous) IO和异步( ...
- 详说 Cookie, LocalStorage 与 SessionStorage
本文最初发布于我的个人博客:咀嚼之味 最近在找暑期实习,其中百度.网易游戏.阿里的面试都问到一些关于HTML5的东西,问题大多是这样开头的:“你用过什么HTML5的技术呀?” 而后,每次都能扯到 Co ...
- ThinkPHP5中Session的使用
由于用惯了ThinkPHP之前的版本,一想到要用Session就直接用$_SESSION来存取,今天看了ThinkPHP5的手册,才发现原来这么用时不安全滴.ThinKPHP5对Session进行了封 ...
- objective-C常量与变量
1.Objective-C中声明常量使用关键字const.如:const double PI = 3.1514; 2.Objective-C中变量可以分为成员变量.局部变量和全局变量(用的很少,尽量不 ...
- ngx_http_upstream_module模块学习笔记
ngx_http_upstream_module用于将多个服务器定义成服务器组,而由proxy_pass,fastcgi_pass等指令引用 (1)upstream name {...} 定义一个后 ...
- PHP常用函数和常见疑难问题解答
PHP常用库函数介绍 一.PHP字符串操作常用函数 1.确定字符串长度 int strlen(string str) 2.比较两个字符串 a. strcmp函数对两个字符串进行二进制安全的比较,并区 ...
- ContentProvider与ContentResolver使用【转】
这篇文章被转载而转载者未注明原文出处,在此未加上原文地址链接,本人向原作者致以歉意. 下面是文章内容: 使用ContentProvider共享数据: 当应用继承ContentProvider类,并重写 ...
- android 模拟按键事件
模拟按键事件可以提高代码的复用性,比如在一个edittext的回车事件里做的一些处理 在该edittext的另一个输入要做相同的处理时,模拟按键事件就非常方便了. 代码很简单,直接上代码: new T ...