2.17 sortBy

2.17.1 语法

_.sortBy(list, iteratee, [context])

2.17.2 说明

返回一个排序后的list拷贝副本。

  • list为集合,如数组、对象、字符串、arguments等
  • iteratee为排序的依据,可以为function,元素的属性、元素的key也可以全局方法。
  • iteratee也可以不传
  • iteratee的参数为(value, key, list)
  • iteratee如果是function需要返回值
  • context可以改变iteratee内部的this
  • 返回的结果是list的副本

2.17.3 代码示例

示例一: 比较适合于数组的元素是对象,进行排序

var stooges = [{name: 'moe', age: 60}, {name: 'larry', age: 40}, {name: 'curly', age: 50}];
var result = _.sortBy(stooges, 'age'); console.log(result);
//=> [{age: 40, name: 'larry'}, {age: 50, name: 'curly'}, {age: 60, name: 'moe'}]

示例二:iteratee为排序的依据

上例的iteratee对list元素的key,也可以是list元素的属性,或全局的方法。

var list = ['2.00', '1.000', '3.0', '-4'];

// iteratee为全局的方法
var arr1 = _.sortBy(list, Math.abs);
console.log(arr1) //=> ["1.000", "2.00", "3.0", "-4"] // iteratee为元素的属性
var arr2 = _.sortBy(list, 'length');
console.log(arr2); //=> ["-4", "3.0", "2.00", "1.000"]

示例三:list为集合

//数组
_.sortBy([1, 4, 7, 10, -2]); //=> [-2, 1, 4, 7, 10] //对象
_.sortBy({a: -2, b: 1, c: 4}); //=>[-2, 1, 4] //字符串
_.sortBy('45123'); //=>["1", "2", "3", "4", "5"] //arguments
(function(){
_.sortBy(arguments); //=>[-2, 1, 4]
}(-2, 1, 4));

示例四:iteratee的参数

_.sortBy(['a', 'b'], function(value, key, list){
console.log(value, key, list);
//=> a 0 ["a", "b"]
//=> b 1 ["a", "b"]
return value;
});

示例五:context可以改变iteratee内部的this

_.sortBy(['a'], function(value, key, list){
console.log(this); //=> Object {text: "hello"}
return value;
}, {text : 'hello'});

示例六: 返回的结果是list的副本

var list = ['1112', '222'];
var result = _.sortBy(list, 'length'); //list没有被改变
console.log(list); //=> ["1112", "222"]
console.log(result); //=> ["222", "1112"]

2.17.4 list特殊情况返回空数组

console.log(_.sortBy(null));
console.log(_.sortBy(NaN));
console.log(_.sortBy(undefined));
console.log(_.sortBy({}));
console.log(_.sortBy(''));
console.log(_.sortBy(true));
console.log(_.sortBy(false));

2.17.5 和_.map的对比

var list = [undefined, 4, 1, undefined, 3, 2];

var arr1 = _.map(list, function(){
});
var arr2 = _.sortBy(list, function(){
});
console.log(arr1); //=>[undefined, undefined, undefined, undefined, undefined, undefined]
console.log(arr2); //=>[undefined, 4, 1, undefined, 3, 2]

2.17.6 请将列表按at的值倒序输出(坑)

var list = [{
title : 1,
at : 1452691455595
},{
title : 3,
at : 1452691505847
},{
title : 2,
at : 1452691505347
}]; var result = (function(list){
//请写下你的代码
}(list)); console.log(result);
//=> [{title:3, at:1452691505847},{title:2, at: 1452691505347},{title:1, at:1452691455595}]

2.17.7 请将列表按stopDate的值排序输出。(坑)

不管是正序或倒序,stopDate的值null的时候,统一放在后面。

var list = [{
"id": "0",
"stopDate": null
}, {
"id": "1",
"stopDate": "10/06/2014"
}, {
"id": "2",
"stopDate": null
}, {
"id": "3",
"stopDate": "09/06/2014"
}]; var asc = (function (list) {
//请写下你的代码
}(list)); var desc = (function (list) {
//请写下你的代码
}(list));

underscorejs-sortBy学习的更多相关文章

  1. 不学就吃亏的underscorejs类库学习示例 ——(集合篇)

    underscorejs是一个很不错的类库,我的很多项目都引用了这个类库,的确可以带来很多方便. 记得我当初学的时候,看underscorejs的api是看的一知半解的,甚至不明白api里的conte ...

  2. 大数据学习day24-------spark07-----1. sortBy是Transformation算子,为什么会触发Action 2. SparkSQL 3. DataFrame的创建 4. DSL风格API语法 5 两种风格(SQL、DSL)计算workcount案例

    1. sortBy是Transformation算子,为什么会触发Action sortBy需要对数据进行全局排序,其需要用到RangePartitioner,而在创建RangePartitioner ...

  3. 细谈Slick(5)- 学习体会和将来实际应用的一些想法

    通过一段时间的学习和了解以及前面几篇关于Slick的讨论后对Slick这个函数式数据库编程工具有了些具体的了解.回顾我学习Slick的目的,产生了许多想法,觉着应该从实际的工作应用角度把我对Slick ...

  4. JavaScript学习总结(二)数组和对象部分

    pt学习总结(二)数组和对象部分 2016-09-16    分类:WEB开发.编程开发.首页精华暂无人评论     来源:trigkit4 分享到:更多1 对象部分 Object类型 Object  ...

  5. backbone库学习-Collection

    backbone库的结构: http://www.cnblogs.com/nuysoft/archive/2012/03/19/2404274.html 本文所有例子来自于http://blog.cs ...

  6. Backbone学习笔记一Backbone中的MVC

    原文章地址http://bigdots.github.io/2015/12/01/Backbone学习笔记(一)/#more Backbone.js为复杂WEB应用程序提供模型(models).集合( ...

  7. 《Learning Play! Framework 2》学习笔记——案例研究1(Templating System)

    注解: 这是对<Learning Play! Framework 2>第三章的学习 本章是一个显示聊天记录的项目,只有一个页面,可以自动对聊天记录进行排序.分组和显示,并整合使用了less ...

  8. APPCAN学习笔记004---AppCan与Hybrid,appcan概述

    APPCAN学习笔记004---AppCan与Hybrid,appcan概述 技术qq交流群:JavaDream:251572072 本节讲了appcan的开发流程,和开发工具 笔记不做具体介绍了,以 ...

  9. Angularjs学习笔记《一》

    开始慢慢的学习新的框架,Angularjs,其中原理不知深浅,但有例子练习,慢慢熟知.看的英文文档一点点翻译学习. 第一个例子,写一个增加,选中,删除的例子, 首先要引进所用的框架源码,这样引进,下面 ...

  10. 学习ASP.NET MVC(十)——排序

    1 按照价格对书籍进行排序 下面我们通过一个简单的例子学习如何对书籍信息按照价格进行排序. 首先,我们在Controllers\BookController.cs文件中的SearchIndex方法添加 ...

随机推荐

  1. 【转】【Android】使用BaseAdapter实现复杂的ListView

    原文网址:http://blog.csdn.net/jueblog/article/details/11857281 使用BaseAdapter实现复杂的ListView的步骤: 1. 数据你要准备好 ...

  2. Python根据上下限生成不重复随机数

    Python 2.7.5 代码: # coding=gbk import random import sys min_num = input('输入下限:') max_num = input('输入上 ...

  3. 获取Android设备屏幕分辨率

    1.Android 4.3引入的wm工具: a.获取Android设备屏幕分辨率: adb shell wm size b.获取android设备屏幕密度: adb shell wm density ...

  4. ltp工具使用配置

    ltp是一个比较全的自然语言处理工具,可以用它进行分词.词性标注.语法分析等任务. ---- 准备 下载 下载ltp和ltp4j,在cmake官网下载并安装相应版本的cmake,并且下载ant. 构建 ...

  5. O - Extended Traffic(判断负环)

    题意:有n个城市,每一个城市有一个拥挤度ai,从一个城市I到另一个城市J的时间为:(aJ-aI)^3,存在负环.问从第一个城市到达第k个城市所话的时间,如果不能到达,或者时间小于3输出?否则输出所花的 ...

  6. J2EE 关于WebLogic下应用使用URL.openConnection获取连接返回 HttpsURLConnection与SOAPHttpsURLConnection的问题

    J2EE 关于WebLogic下应用使用URL.openConnection获取连接返回 HttpsURLConnection与SOAPHttpsURLConnection的问题 2012年03月09 ...

  7. 在Eclipse工具里创建maven的web工程,在建立src/main/java包出现The folder is already a source folder.解决

    1. 与创建普通java工程一样,点击右键找到New菜单,在弹出的界面输入maven ---->>点击maven Project------>>点击next 2  进入下一个界 ...

  8. 5th day

    感觉mysql里面的东西好多,很容易忘记,不是很熟练,知道某些函数有某种功能,但就是想不起来函数的名字,需要去翻笔记,真的还需要大量的练习,毕竟这块的内容可以说是全新的...不知道后面做项目怎么样,这 ...

  9. Java 判断一段网络资源是否存在

    package cn.ycmedia.common.utils; import java.io.InputStream; import java.net.URL; import java.net.UR ...

  10. 融云的Java端实现

    产品中要使用融云实现即时通讯,下面是实现步骤: 1 .注册appkey secret,这个是第一步: 2 .下载融云Java客户端 https://github.com/rongcloud/serve ...