全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

underscore之Collections_动力节点Java学院整理

underscore为集合类对象提供了一致的接口。集合类是指Array和Object,暂不支持Map和Set。

map/filter

和Array的map()与filter()类似,但是underscore的map()和filter()可以作用于Object。当作用于Object时,传入的函数为function (value, key),第一个参数接收value,第二个参数接收key:

'use strict';
var obj = {
  name: 'bob',
  school: 'No.1 middle school',
  address: 'xueyuan road'
};
var upper = _.map(obj, function (value, key) {
  return value;
});
alert(JSON.stringify(upper));

你也许会想,为啥对Object作map()操作的返回结果是Array?应该是Object才合理啊!把_.map换成_.mapObject再试试。

every / some

当集合的所有元素都满足条件时,_.every()函数返回true,当集合的至少一个元素满足条件时,_.some()函数返回true:

'use strict';
// 所有元素都大于0?
_.every([1, 4, 7, -3, -9], (x) => x > 0); // false
// 至少一个元素大于0?
_.some([1, 4, 7, -3, -9], (x) => x > 0); // true

当集合是Object时,我们可以同时获得value和key:

'use strict';
var obj = {
  name: 'bob',
  school: 'No.1 middle school',
  address: 'xueyuan road'
};
// 判断key和value是否全部是小写:
var r1 = _.every(obj, function (value, key) {
  return value;
});
var r2 = _.some(obj, function (value, key) {
  return value;
});
alert('every key-value are lowercase: ' + r1 + '\nsome key-value are lowercase: ' + r2);

max / min

这两个函数直接返回集合中最大和最小的数:

'use strict';
var arr = [3, 5, 7, 9];
_.max(arr); // 9
_.min(arr); // 3
// 空集合会返回-Infinity和Infinity,所以要先判断集合不为空:
_.max([])
-Infinity
_.min([])
Infinity

注意,如果集合是Object,max()和min()只作用于value,忽略掉key:

'use strict';
_.max({ a: 1, b: 2, c: 3 }); // 3

groupBy

groupBy()把集合的元素按照key归类,key由传入的函数返回:

'use strict';
var scores = [20, 81, 75, 40, 91, 59, 77, 66, 72, 88, 99];
var groups = _.groupBy(scores, function (x) {
  if (x < 60) {
    return 'C';
  } else if (x < 80) {
    return 'B';
  } else {
    return 'A';
  }
});
// 结果:
// {
//  A: [81, 91, 88, 99],
//  B: [75, 77, 66, 72],
//  C: [20, 40, 59]
// }

可见groupBy()用来分组是非常方便的。

shuffle / sample

shuffle()用洗牌算法随机打乱一个集合:

'use strict';
// 注意每次结果都不一样:
_.shuffle([1, 2, 3, 4, 5, 6]); // [3, 5, 4, 6, 2, 1]
sample()则是随机选择一个或多个元素:
'use strict';
// 注意每次结果都不一样:
// 随机选1个:
_.sample([1, 2, 3, 4, 5, 6]); // 2
// 随机选3个:
_.sample([1, 2, 3, 4, 5, 6], 3); // [6, 1, 4]


# underscore  # collections  # JavaScript专题之underscore防抖实例学习  # 手写Spirit防抖函数underscore和节流函数lodash  # underscore之function_动力节点Java学院整理  # Underscore之Array_动力节点Java学院整理  # underscore之Chaining_动力节点Java学院整理  # underscore 防抖技巧学习示例  # 都不  # 第一个  # 多个  # 则是  # 是指  # 我们可以  # 这两个  # 第二个  # 要先  # 也许会  # 暂不  # 再试  # 为空  # 大和  # 只作  # 作用于  # 应该是  # 结果是  # Object  # school 


相关文章: 如何在香港免费服务器上快速搭建网站?  小程序网站制作需要准备什么资料,如何制作小程序?  宝塔建站后网页无法访问如何解决?  如何通过免费商城建站系统源码自定义网站主题与功能?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  如何用PHP快速搭建高效网站?分步指南  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  香港服务器租用费用高吗?如何避免常见误区?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  南京网站制作费用,南京远驱官方网站?  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  如何通过可视化优化提升建站效果?  一键制作网站软件下载安装,一键自动采集网页文档制作步骤?  建站VPS选购需注意哪些关键参数?  微信小程序 input输入框控件详解及实例(多种示例)  实现点击下箭头变上箭头来回切换的两种方法【推荐】  SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?  股票网站制作软件,网上股票怎么开户?  如何高效利用200m空间完成建站?  Swift中switch语句区间和元组模式匹配  贸易公司网站制作流程,出口贸易网站设计怎么做?  活动邀请函制作网站有哪些,活动邀请函文案?  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  网站企业制作流程,用什么语言做企业网站比较好?  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  如何快速生成凡客建站的专业级图册?  如何快速搭建虚拟主机网站?新手必看指南  建站之星收费标准详解:套餐费用及年费价格表一览  建站之星安装需要哪些步骤及注意事项?  如何在Golang中指定模块版本_使用go.mod控制版本号  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  电商网站制作公司有哪些,1688网是什么意思?  网站专业制作公司有哪些,做一个公司网站要多少钱?  建站之星多图banner生成与模板自定义指南  c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】  电商网站制作价格怎么算,网上拍卖流程以及规则?  陕西网站制作公司有哪些,陕西凌云电器有限公司官网?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  广东企业建站网站优化与SEO营销核心策略指南  网站制作多少钱一个,建一个论坛网站大约需要多少钱?  如何用狗爹虚拟主机快速搭建网站?  建站org新手必看:2024最新搭建流程与模板选择技巧  网站好制作吗知乎,网站开发好学吗?有什么技巧?  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  b2c电商网站制作流程,b2c水平综合的电商平台?  javascript中的try catch异常捕获机制用法分析  怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?  网站制作公司排行榜,抖音怎样做个人官方网站  油猴 教程,油猴搜脚本为什么会网页无法显示? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。