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 ...
随机推荐
- SVN创建Tags
右键trunk,选择分支/标记... 资源库,到URL:要创建Tag的位置 Next Next ...
- POJ C程序设计进阶 编程题#6:流感传染
编程题#6:流感传染 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 有一批 ...
- VS2008使用技巧及快捷键大全
VS2008技巧,非常实用,非常提高效率. 1,Visual Studio 2008自带的1000多个 Windows 系统使用的各种图标.光标和动画文件在Visual Studio 2008的安装目 ...
- Winform下WebBrowser 编辑模式 监听键盘按键事件
最近使用 WebBrowser 做了个富文本编辑器(其实网上有很多很多).例如下面这个玩意(不要在意界面神马的) WebBrowser在编辑模式下可以有一些HTML标签的功能,改变字体大小颜色等等等. ...
- PHP-PCRE正则表达式函数
PCRE正则表达式函数 PCRE字符类 \\b 词边界 \\d 匹配任意数字 \\s 匹配任意空白,如TAB制表符或空格 \\t 匹配一个TAB ...
- 14)Java中Assert
J2SE 1.4在语言上提供了一个新特性,就是assertion(断言)功能,它是该版本在Java语言方面最大的革新.在软件开发中,assertion是一种经典的调试.测试方式. jvm 断言默认是关 ...
- 用VBA计算WPS 表格ET EXCEL中的行数和列数的多重方法
用VBA计算WPS 表格ET EXCEL中的行数和列数 每种方法中上面的是Excel的行数,下面的是Excel的列数. 方法1: ActiveSheet.UsedRange.Rows.Count Ac ...
- .Net并行编程
1.什么是线程?线程和进程的区别是什么? 线程是程序执行的最小单元. 区别: 进程是操作系统进行资源处理和分配的最小单位,而一个进程可以包含多个线程,并共享进程的资源. 2.什么是多线程?为什么设计多 ...
- USB设备---URB请求快
1.urb 结构体USB 请求块(USB request block,urb)是USB 设备驱动中用来描述与USB 设备通信所用的基本载体和核心数据结构,非常类似于网络设备驱动中的sk_buff 结构 ...
- void *p 类型,illegal indirection错误
#include<stdio.h>int main(void) { int i=0; int *pint=&i; double d=1.23; doubl ...