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. 教您怎么从spring 官网下载参考文档

    假如您使用spring,那么本经验可能帮助到您. 假如您使用spring的过程中,需要查询一些文档,那么本经验可能帮助到您. 假如您对下载spring的文档有疑惑,那么本经验可能帮助到您. 教您怎么从 ...

  2. 图论(网络流):SPOJ OPTM - Optimal Marks

    OPTM - Optimal Marks You are given an undirected graph G(V, E). Each vertex has a mark which is an i ...

  3. oracle常用命令总结

    声明:本文为博主在做项目中用到的一些常用命令,请勿转载,只为保存. oracle常用命令总结 创建表空间: --create tablespace vms--datafile 'e:\vms.dbf' ...

  4. linux下安装python linux下一些常用的命令

    注意 ubuntukylin-14.04.2-desktop-amd64 自带python2.7.6 这个说的比较详细 http://wenku.baidu.com/link?url=gaeFcQrc ...

  5. [后端Day1]Python2.7之基础

    注:以下内容全部为 廖雪峰的官方网站 中学习内容的摘要和总结 输入和输出: name = raw_input('please enter your name: ') print '100 + 200 ...

  6. [Locked] Zigzag Iterator

    Zigzag Iterator Given two 1d vectors, implement an iterator to return their elements alternately. Fo ...

  7. openStack 云平台管理节点管理网口流量非常大 出现丢包严重 终端总是时常中断问题调试及当前测试较有效方案

    tuning for Data Transfer hosts connected at speeds of 1Gbps or higher <一.本次OpenStack系统调试简单过程简单记录& ...

  8. J - Fire!

    题目大意: 这是一个放火逃生的游戏,就是给出来一个迷宫,迷宫里面有人‘J’和火焰‘F’当然这些火焰可能不止一处,然后问这个人最快从迷宫里面逃出来需要多久 /////////////////////// ...

  9. C语言学习_从VC++6.0开始

    前言: C语言是一门博大精深的语言,C语言往往是程序员以及所有软件行业从业者的第一门编程语言. 编程环境: 对于初学者来说,我一开始学习C语言,其实是用的turboc 2.0版本,这个很有历史感,但是 ...

  10. 【原创】FAT32系统硬盘的数据恢复实例,这篇文章也是从自己QQ空间的,转移过来的

    FAT32系统硬盘的数据恢复实例软件:win hex(16进制的编辑器)恢复内容:在FAT32中恢复一张图片1.首先我们格式化一个分区为空,让分区的系统选为FAT32系统格式化.如下: psb.jpg ...