/**
* 描述:该sort()方法对数组中的元素进行排序并返回该数组,默认排序顺序是根据字符串Unicode代码点。
* 语法:arr .sort([compareFunction])
* 参数:
* 指定定义排序顺序的函数。如果省略,则根据每个元素的字符串转换,根据每个字符的Unicode代码点值对数组进行排序。
* 如果compareFunction未提供,undefined则通过将所有非数组元素转换为字符串并按Unicode代码点顺序比较字符串来对所有非数组元素进行排序。
* 例如,“香蕉”出现在“樱桃”之前。在数字排序中,9出现在80之前,但由于数字被转换为字符串,因此“80”以Unicode顺序出现在“9”之前(也就是说,只匹配第一位)。
* 所有 undefined 元素都排序到数组的末尾。
* 返回值:排序的数组。请注意,数组已就地排序,并且不进行复制。
*/ /**
* 1.默认升序(因此“80”以Unicode顺序出现在“9”之前(也就是说,只匹配第一位))
* 2.可根据可选函数,进行升序和降序
*/ var a = ['A', 'B', '2', '1', '10', '80', '9'];
var b = a.sort(
// function (a, b) {
// if (a < b) {
// return -1;
// }
// if (a > b) {
// return 1;
// }
// return 0;
// } // a-b则为升序
// b-a则为降序
// function hello(a, b) {
// return b - a;
// }
function (a, b) {
return b - a;
}
); console.log(b); /**
* 可以根据其中一个属性的值对对象进行排序
*/
var items = [
{ name: 'Edward', value: 21 },
{ name: 'Sharpe', value: 37 },
{ name: 'And', value: 45 },
{ name: 'The', value: -12 },
{ name: 'Magnetic', value: 13 },
{ name: 'Zeros', value: 37 }
]; // sort by value
items.sort(function (a, b) {
return a.value - b.value;
}); // sort by name
items.sort(function (a, b) {
var nameA = a.name.toUpperCase(); // ignore upper and lowercase
var nameB = b.name.toUpperCase(); // ignore upper and lowercase
if (nameA < nameB) {
return -1;
}
if (nameA > nameB) {
return 1;
}
return 0;
}); console.log(items) /**
* 非ASCIll排序
*/ var items = ['réservé', 'premier', 'cliché', 'communiqué', 'café', 'adieu'];
items.sort(function (a, b) {
return a.localeCompare(b);
}); /**
*使用map排序
*原因:
* compareFunction可在阵列内被调用每个元件多次。
* 根据其compareFunction性质,这可能会产生很高的开销。
* 做的工作compareFunction越多,排序的元素就越多,可以考虑使用地图进行排序。
* 我们的想法是遍历数组一次以提取用于排序到临时数组的实际值,对临时数组进行排序,然后遍历临时数组以实现正确的顺序。
*
*/ var list = ['Delta', 'alpha', 'CHARLIE', 'bravo'];
var mapped = list.map(function (el, i) {
return { index: i, value: el.toLowerCase() };
}) mapped.sort(function (a, b) {
if (a.value > b.value) {
return true;
}
if (a.value < b.value) {
return false;
}
return;
}); var result = mapped.map(function (el) {
return list[el.index];
}); console.log(result);

es5 - array - sort的更多相关文章

  1. javascript array sort()

    [5,10,1].sort(); 结果[1,10,5] 有点出人意料. array.sort( sortFunction )可选-指定如何比较元素顺序的函数名称 如果省略sortFunction参数, ...

  2. Array.sort()方法

    Array.sort()方法将数组中的元素排序并返回排序后的数组. 当不带参数时,默认按照顺序排序,也就是从小到大.当然,也可以直接给sort加一个比较函数比较. ,,]; arr.sort(); c ...

  3. C# 字典排序Array.Sort

    Array.Sort可以实现便捷的字典排序,但如果完全相信他,那么就容易产生些异常!太顺利了,往往是前面有坑等你. 比如:微信接口,好多地方需要签名认证,签名的时候需要用的字典排序,如果只用Array ...

  4. .NET Framework System.Array.Sort 数组类,加深对 IComparer、IComparable 以及泛型委托、匿名方法、Lambda 表达式的理解

    本文内容 自定义类 Array.Sort 参考资料 System.Array.Sort 有很多对集合的操作,比如排序,查找,克隆等等,你可以利用这个类加深对 IComparer.IComparable ...

  5. 关于array.sort(array,array)

    // 基于第一个 System.Array 中的关键字,使用每个关键字的 System.IComparable 实现,对两个一维 System.Array // 对象(一个包含关键字,另一个包含对应的 ...

  6. [ActionScript 3.0] 对数组中的元素进行排序Array.sort()的方法

    对数组中的元素进行排序. 此方法按 Unicode 值排序. (ASCII 是 Unicode 的一个子集.) 默认情况下,Array.sort()按以下方式进行排序: 1. 排序区分大小写(Z优先于 ...

  7. 排序算法| Array.sort()算法规则

    1.js的Array.sort()是使用什么算法排序: 1.火狐中是“归并排序” 2.V8引擎是 “插入排序和快速排序结合”.数组长度不超过10时,使用插入排序.长度超过10使用快速排序.在数组较短时 ...

  8. C# - Array.Sort()方法

    Array类简介 Array类是C#中所有数组的基类.我们常用的[]声明数组即为Array类的语法,我们可通过Array类提供的各种方法对C#中数组进行操作.最典型的就是数组排序 Array.Sort ...

  9. Array.Sort(valuesArry);

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...

随机推荐

  1. 在学习HTML——form表单中的label标签时的一点小体会

    在我啃了一遍书本之后,开始了在慕课看视频的过程,从最开始的HTML+CSS的基础课程看起,在第5-9小节讲到了form表单的label标签, 首先看一下慕课的讲解:  label 标签不会向用户呈现任 ...

  2. Python中__new__()方法的使用和实例化

    new()是在新式类中新出现的方法,它作用在构造方法init()建造实例之前,可以这么理解,在Python 中存在于类里面的构造方法init()负责将类的实例化,而在init()调用之前,new()决 ...

  3. POJ 3974 Palindrome 字符串 Manacher算法

    http://poj.org/problem?id=3974 模板题,Manacher算法主要利用了已匹配回文串的对称性,对前面已匹配的回文串进行利用,使时间复杂度从O(n^2)变为O(n). htt ...

  4. 最短路径:我的理解--SPFA算法

    SPFA算法 求单源最短路的SPFA算法的全称是:Shortest Path Faster Algorithm. 最短路径快速算法-SPFA算法是西南交通大学段凡丁于1994年发表的. 适用范围:给定 ...

  5. CROC 2016 - Qualification C. Hostname Aliases map

    C. Hostname Aliases 题目连接: http://www.codeforces.com/contest/644/problem/C Description There are some ...

  6. 2015 UESTC 数据结构专题C题 秋实大哥与快餐店 字典树

    C - 秋实大哥与快餐店 Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 ...

  7. PAT甲级1057. Stack

    PAT甲级1057. Stack 题意: 堆栈是最基础的数据结构之一,它基于"先进先出"(LIFO)的原理.基本操作包括Push(将元素插入顶部位置)和Pop(删除顶部元素).现在 ...

  8. mysql插入中文乱码问题

    1.show variables like 'character%' 2.修改 MySql安装目录下面的my.ini(MySQL Server Instance Configuration 文件). ...

  9. android基础篇------------java基础(11)(文件解析xml and Json )

    一:xml文件解析 首先看一下:我们要解析的内容: <?xml version="1.0" encoding="gbk" ?> - <book ...

  10. FreeRTOS Memory Management ( IAR )

    http://www.freertos.org/a00111.html The RTOS kernel allocates RAM each time a task, queue, mutex, so ...