【JavaScript 学习--02】--排序问题(正序和逆序)
2016-09-20 17:04
826 查看
在JS里常常用到排序(包括正序和逆序),特记录下
执行结果是:
==============
实际执行过程是如下这样:
—————————–深入理解sort
关于sort()的详细内容可以参考:http://www.w3schools.com/jsref/jsref_sort.asp
Example
Sort numbers in an array in ascending(up) order:
The result of points will be:
Sort numbers in an array in descending(down) order:
The result of points will be:
例子:
Since version 3.10.0 you can even use standard semantics for ordering (asc, desc):
In version 4 of lodash this method has been renamed orderBy:
1.正序
原始数据为:var test_order = [{order:5, name:"tl1"},{name:"tl2"},{order:4, name:"tl3"},{order:1, name:"tl4"}]
1.1 利用JS的sort()正序排序
test_order.sort(function (a,b) { console.log("a=" + a.name+";b="+ b.name); return (a.order||0) - (b.order||0); });
执行结果是:
[{name: "tl2"},{order: 1, name: "tl4"},{order: 4, name: "tl3"},{order: 5, name: "tl1"}]
==============
实际执行过程是如下这样:
a=tl1;b=tl2 a=tl1;b=tl3 a=tl2;b=tl3 a=tl1;b=tl4 a=tl3;b=tl4 a=tl2;b=tl4
—————————–深入理解sort
关于sort()的详细内容可以参考:http://www.w3schools.com/jsref/jsref_sort.asp
Example
Sort numbers in an array in ascending(up) order:
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a-b});
The result of points will be:
1,5,10,25,40,100
Sort numbers in an array in descending(down) order:
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b-a});
The result of points will be:
100,40,25,10,5,1
1.2 Lodash 的sortBy 正序排序
Lodash官方网站可以查阅:Lodash docs例子:
var myArray = [ 3, 4, 2, 9, 4, 2 ]; _.sortBy(myArray); // → [ 2, 2, 3, 4, 4, 9 ] _(myArray).sortBy().take(3).value(); // → [ 2, 2, 3 ] var users = [ { 'user': 'fred', 'age': 48 }, { 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }, { 'user': 'barney', 'age': 34 } ]; _.sortBy(users, [function(o) { return o.user; }]); // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] _.sortBy(users, ['user', 'age']); // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]
2.逆序
2.1 JS原生态的sort进行逆序排序
可以将正序里面的匿名函数返回值前加个负号,或者用后者减去前者也可以实现。比如:test_order.sort(function (a,b) { return -(a.order||0) - (b.order||0); }); //====>等价于 test_order.sort(function (a,b) { return (b.order||0) - (a.order||0); });
2.2 Lodash库的orderBy进行逆序排序
As of lodash 3.5.0 you can use sortByOrder (renamed orderBy in v4.3.0):var data = _.sortByOrder(array_of_objects, ['type','name'], [true, false]);
Since version 3.10.0 you can even use standard semantics for ordering (asc, desc):
var data = _.sortByOrder(array_of_objects, ['type','name'], ['asc', 'desc']);
In version 4 of lodash this method has been renamed orderBy:
var data = _.orderBy(array_of_objects, ['type','name'], ['asc', 'desc']);
相关文章推荐
- javaScript时钟问题 (收藏学习)
- JavaScript学习笔记9--表格排序
- Javascript学习笔记3——变量、作用域和内存问题
- python学习笔记:二维数组排序问题
- 对javascript表格中的元素进行排序(正序和倒序)
- Collection -> Array的排序(正序/逆序)
- javascript学习2——javascript常见问题
- JavaScript学习笔记(一)—细节问题
- javascript学习笔记(十一)对表格进行排序(包括数值、字符串、日期等数据类型)
- javascript学习笔记—表格的动态添加、删除,表格排序
- Collection -> Array的排序(正序/逆序)
- C# Hashtable 正序和逆序排序
- Javascript学习【类型转化问题总汇】
- 前台JQuery绑定和后台绑定 区分 +JS单引号和双引号调用函数区分+ 正序,逆序排序想法
- javaScript菜鸟:学习js的Sort()排序的总结(参考大师示例)
- JavaScript学习笔记9--表格排序
- 烙饼排序问题最优次数求解 暑期学习笔记(九)
- 面向对象的JavaScript的表格排序问题
- JavaScript学习总结一:js常见问题
- JavaScript学习笔记 -- 变量作用域问题