underscorejs-groupBy学习

2.18 groupBy

2.18.1 语法

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

2.18.2 说明

把list分为多个集合,iterator为分组的依据,返回值为Object

  • list可以是数组、对象、字符串或arguments等
  • iteratee为分组的依据.
  • iterator的参数(value, key, list)
  • iterator如果是function需要返回值
  • context可以改变iterator内部的this

2.18.3 代码示例

示例一:list可以是数组、对象、字符串或arguments等

var parity;
var iteratee = function(value, key, list){return value % 2; // value % 2的结果是0或是1,所以key就是0或是1//return value % 2 === 0; //这样子就变成了true或false
};//list为数组
parity = _.groupBy([1, 2, 3], iteratee);
console.log(parity); //=> {0:[2], 1:[1, 3]}//list为对象
parity = _.groupBy({a:1, b:2, c:3}, iteratee);
console.log(parity); //=> {0:[2], 1:[1, 3]}//list为字符串
parity = _.groupBy('123', iteratee);
console.log(parity); //=> {0:[2], 1:[1, 3]}//list为arguments
(function(){parity = _.groupBy(arguments, iteratee);console.log(parity); //=> {0:[2], 1:[1, 3]}
}(1, 2, 3));

示例二:iteratee可以全局的方法

var parity;//iteratee可以是全局的方法
parity = _.groupBy([1, 1.4, 1.6, 1.9], Math.floor);
console.log(parity); //=> {1 : [1, 1.4, 1.6, 1.9]}parity = _.groupBy([1, 1.4, 1.6, 1.9], Math.ceil);
console.log(parity); //=> {1 : [1], 2: [1.4, 1.6, 1.9]}

示例三:iteratee可以是list内元素的属性

var parity = _.groupBy(['a', 'b', 'cc'], 'length');
console.log(parity); //=> {1:['a', 'b'], 2:['c']}

示例四:iteratee可以是list内,元素的key

这种情况其实是用的最多的。

var array = [{"type": "stream","price": "3.99","id": "13nee"
}, {"type": "stream","price": "2.99","id": "8ejwj"
}, {"type": "buy","price": "3.99"."id": "9akwk"
}];var parity = _.groupBy(array, 'type');
console.log(parity); 
//=>
// {
//     stream: [{
//         "type": "stream",
//         "price": "3.99",
//         "id": "13nee"
//     }, {
//         "type": "stream",
//         "price": "2.99",
//         "id": "8ejwj"
//     }],
//     buy: [{
//         "type": "buy",
//         "price": "3.99".
//         "id": "9akwk"
//     }]
// }

示例五:iteratee的参数

_.groupBy('abc', function(v, i, l){console.log(v, i, l);//=> a 0 abc//=> b 1 abc//=> c 2 abcreturn v;
});

示例六:context可以改变iterator内部的this(坑)

_.groupBy('1', function(v, i, l){console.log(this);//=> Object {txt: "moe"}
}, {txt : 'moe'});_.groupBy('1', function(v, i, l){console.log(this ===1 ); //true or false?
}, 1);

2.18.4 list的特殊情况

console.log(_.groupBy(null)); //=> Object {}
console.log(_.groupBy(undefined)); //=> Object {}
console.log(_.groupBy(NaN)); //=> Object {}
console.log(_.groupBy(true)); //=> Object {}
console.log(_.groupBy(false)); //=> Object {}

2.18.5 将下列数组,按是否数字分类

var arr = [1, '1', '2', 2, '3', '3'];var parity = (function(arr){//写下你的代码
}(arr));console.log(parity);
//=> {false:['1', '2', '3', '3'], true: [1, 2]}

转载于:https://www.cnblogs.com/kyo4311/p/5176217.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257733.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于@WebServlet(“LoginServlet“)404 报错的解决办法 “请求的资源[/test/LoginServlet] 不可用”

关于WebServlet(“LoginServlet”)404 报错的解决办法 “请求的资源[/test/LoginServlet] 不可用” *一切事物的开头总是困难这句话,在任何一种科学上都是适用的。 * ——马克思 一个困扰了我n天的问题,终于终于还是解决了&#…

ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建

ASP.NET MVCEF框架EasyUI实现权限管理系列(14)-主框架搭建 原文:ASP.NET MVCEF框架EasyUI实现权限管理系列(14)-主框架搭建ASP.NET MVCEF框架EasyUI实现权限管系列 (开篇) (1):框架搭建 (2):数据库访问层的设计Demo (3):面向接口编程 (4 ):业务逻辑层的封装 (5):前台…

常用事务代码 sap_SAP_PS_事务代码

[转]SAP PS常用事务代码T-CODESAP项目系统(Project System,以下简称PS)模块作为传统的非常规模块(除FI、CO、MM、PP、SD之外的模块)之一,在最近几年在国内也得到的较为广泛的应用,与PS应用火热场景相对应的是PS内外部顾问的极度缺乏。这种缺乏一方面表现…

Java 冒泡排序的实现

实现原理: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个…

CLion for mac安装配置

前言 本文详细多图介绍 IntelliJ IDEA For Mac的激活教程,相当于永久激活 文件包百度云下载:(通过与熊论道网站解密) 熊曰:呋溫捕嘿誘襲氏樣溫住既非破哮誒襲非捕溫肉性盜森魚非襲啽蜜呦訴嘿溫類盜山寶住出森非喜誘捕發嗥既肉嗅…

solr后台界面介绍——(十一)

1.加一个collection的方法 复制solr-home下的collection1,修改名字为collection2。并且修改collection2文件夹中配置文件core.properties中的名字为collection2,重启服务器。 2.后台界面介绍 Dashboard 仪表盘,显示了该Solr实例开始启动运行的…

功率信号与能量信号的超棒理解!

功率信号与能量信号的理解! 功率信号和能量信号一直是一个令我疑惑的概念,一个无限一个为零。但是下面令我茅塞顿开! ~~~分割线啊分割线~~~

vscode终端不识别python_VSCode无法识别我的已安装Python包

Windows上的VSCode与Python。 Don安装的Python扩展,不确定它有什么不同,但考虑给我的环境使用VSCode for Python,在那个过程中,我安装了metapy包。我能够在VSCode中的终端窗口内运行此metapy,但不能在编辑器中运行PS C…

现在也是只能谢谢随笔了,但是在以后收货的日子里会有更多的感想记下

每天虽然都会在各个方面都记下一点日常事务的说明,但是会有重复,以后工作了向高中一样一定会有许多的话,但是我不希望这是一些抱怨,更多的应该是收货,这几天也是早上不知怎么会有点头疼,加上每天取暖口有点…

[转载]AngularJS之Factory vs Service vs Provider

http://www.oschina.net/translate/angularjs-factory-vs-service-vs-provider http://tylermcginnis.com/angularjs-factory-vs-service-vs-provider/ 要注意的文章中,app.provider(...)里的代码有点出处,之后作者改过,但是转载的网站上图片…

C#学习笔记:预处理指令

C#和C/C一样,也支持预处理指令,下面我们来看看C#中的预处理指令。 #region 代码折叠功能,配合#endregion使用,如下: 点击后如下: 条件预处理 条件预处理可以根据给出的条件决定最终进行编译的代码&#xff…

android sh 指令_Java/Android中实现Shell命令

有时候我们需要实现一个功能。不过这个功能用我们传统的Java代码实现起来会有一些困难,这时我们可以尝试利用Shell命令来实现。你可以按照下面的代码模块来进行你想要实现的Shell命令(注:也不是所有的Shell命令都能用Java代码来实现)。public class Main…

【数字信号处理】 第二章、时域中的离散时间信号

前言 学而时习之,不亦乐乎? ——《论语学而》 Is it not pleasant to learn with a constant perseverance and application? 。 第二章 时域中的离散时间信号 一、离散信号的基本定义 1、两个基本类型 抽样数据类型:即模拟信号通过定周期进行采样…

开机流程与主引导分区(MBR)——鸟哥私房菜

在前篇随笔中,已经谈到了CMOS与BIOS,CMOS是记录各项硬件参数(包括系统时间、设备的I/O地址、CPU的电压和频率等)且嵌入到主板上面的存储器,BIOS是一个写入到主板上的韧体(韧体是写入到硬件上的一个软件程序…

整车厂核心制造系统及数据流

转载于:https://www.cnblogs.com/tallrain/p/MES_Auto_Core_System.html

ch12 GUI

《Head First Java 2nd Edition》 摘录 JFrame 代表屏幕上的一个窗口,可以把 buttons, checkboxes, test fields 等等界面相关的东西置于其上。它可以有一个有菜单项的菜单条。无论在哪个平台上,都有窗口图标,最小化、最大化和关闭窗口的按钮…

两物体的相对速度公式_《百答相对论》连载(二十一)质疑狭义相对论速度的叠加公式...

狭义相对论部分:(21)质疑狭义相对论速度的叠加公式参考《相对论百问》第28页 21相对论的速度叠加公式怎么写?可以用速度叠加达到和超过光速吗?在经典力学中,物体在力的作用下改变原有的速度遵守牛顿第二定律,物体失去了…

对于大规模机器学习的理解和认识

这篇文章,9分转载转述;很少有自己的见解; 首先先露怯:自己真正是去年开始接触机器学习当中的深度学习当中的卷积神经网络当中的前向预测部分; 不过,刚才看完了这里的讨论,(知乎&…

ARM寄存器

ARM处理器模式 用户模式(User):ARM处理器正常的程序执行状态 快速中断模式(FIQ):用于高速数据传输或通道处理 外部中断模式(IRQ):用于通用的中断处理 管理模式(Supervisor):操作系统使用的保护模式 数据访问终止模式(Abort):当数据或指令预取终止时进入该模式,可用于虚拟存储及…

修改shape数据 小数位数_【数据管理】Excel实用精华

点击上方蓝字关注星标★不迷路来源:从Excel小白到数据分析师这是一篇关于Excel中的小技巧但是都是精华,文中附有操作视屏简单易学上手快噢!01添加数据有效性_名称管理器数据有效性是对单元格或单元格区域输入的数据从内容到数量上的限制。对于…