博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
underscorejs之_.countBy(list, iteratee, [context])
阅读量:6123 次
发布时间:2019-06-21

本文共 1997 字,大约阅读时间需要 6 分钟。

语法

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

说明

排序一个列表组成一个组,并且返回各组中的对象的数量的计数。类似groupBy,但是不是返回列表的值,而是返回在该组中值的数目。就像EXCEL里的分类统计

  • list为 遍历的集合,如数组、对象、字符串、arguments等。
  • iteratee 迭代器,可以是一个function也可以字符串等。
  • iteratee 有三个参数 (element, index, list)
  • iteratee 需要有返回
  • context 执行上下文,改成iteratee内的this

代码示例

示例一:根据iteratee分类统计

var parity = _.countBy([1, 2, 3, 4, 5], function (num) {    return num % 2 === 0;});//符合条件的key为在true,不符合条件的key为false。console.log(parity); //=> Object {false: 3, true: 2}

示例二:返回结果的Object指定key

var parity = _.countBy([1, 2, 3, 4, 5], function(num) {  return num % 2 == 0 ? 'even': 'odd';});console.log(parity); //=> Object {odd: 3, even: 2}

示例三:改变iteratee内的this

var parity = _.countBy('12345', function (num) {    console.log(this); //5 times => Object {no: 3}    return num > this.no;}, {no : 3});console.log(parity); //=> Object {false: 3, true: 2}

示例四:iteratee的三个参数& 不要忘记return

var parity = _.countBy('abc', function (element, index, list) {    console.log(element, index, list);    //=> a 0 abc    //=> b 1 abc    //=> c 2 abc});console.log(parity); //=> Object {undefined: 3}

iteratee可以是对象的属性

var list = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten'];var grouped = _.countBy(list, 'length');console.log(grouped); //=> Object {3: 4, 4: 3, 5: 3}

iteratee可以是对象的key

var list = [{x:'a'}, {x:'b'}, {x:'a'}];var grouped = _.countBy(list, 'x');console.log(grouped); //=> Object {a: 2, b: 1}

iteratee可以是对象

var list = [{x:0, y:0}, {x:0, y:1}, {x:1, y:1}];var grouped = _.countBy(list, {x:0});console.log(grouped); //=> Object {true: 2, false: 1}

不传iteratee则以值进行分类统计

var parity = _.countBy('abcab');console.log(parity); //=> Object {a: 2, b: 2, c: 1}

非集合返回{}

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

 

转载于:https://www.cnblogs.com/rechel/p/7615199.html

你可能感兴趣的文章
Chrome浏览器播放HTML5音频没声音的解决方案
查看>>
easyui datagrid 行编辑功能
查看>>
类,对象与实例变量
查看>>
HDU 2818 (矢量并查集)
查看>>
【转】php字符串加密解密
查看>>
22. linux 常用命令
查看>>
ASP.Net 使用GridView模板删除一行的用法
查看>>
(十六)字段表集合
查看>>
JPGraph
查看>>
实验二 Java面向对象程序设计
查看>>
------__________________________9余数定理-__________ 1163______________
查看>>
webapp返回上一页 处理
查看>>
新安装的WAMP中phpmyadmin的密码问题
查看>>
20172303 2017-2018-2 《程序设计与数据结构》第5周学习总结
查看>>
eclipse中将一个项目作为library导入另一个项目中
查看>>
Go语言学习(五)----- 数组
查看>>
Android源码学习之观察者模式应用
查看>>
Content Provider的权限
查看>>
416. Partition Equal Subset Sum
查看>>
centos7.0 64位系统安装 nginx
查看>>