全网整合营销服务商

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

免费咨询热线: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 


相关文章: 如何快速选择适合个人网站的云服务器配置?  Swift中swift中的switch 语句  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  建站之星代理如何获取技术支持?  金*站制作公司有哪些,金华教育集团官网?  如何用5美元大硬盘VPS安全高效搭建个人网站?  建站主机选购指南:核心配置优化与品牌推荐方案  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  如何快速登录WAP自助建站平台?  如何高效利用亚马逊云主机搭建企业网站?  建站之星如何配置系统实现高效建站?  高防服务器租用首荐平台,企业级优惠套餐快速部署  如何在景安服务器上快速搭建个人网站?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  平台云上自助建站如何快速打造专业网站?  建站VPS能否同时实现高效与安全翻墙?  全景视频制作网站有哪些,全景图怎么做成网页?  如何在腾讯云服务器快速搭建个人网站?  建站主机助手选型指南:2025年热门推荐与高效部署技巧  如何在企业微信快速生成手机电脑官网?  制作国外网站的软件,国外有哪些比较优质的网站推荐?  设计网站制作公司有哪些,制作网页教程?  如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  如何在万网开始建站?分步指南解析  整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?  如何零基础开发自助建站系统?完整教程解析  网站制作免费,什么网站能看正片电影?  ,巨量百应是干嘛的?  简单实现Android文件上传  宁波自助建站系统如何快速打造专业企业网站?  济南网站制作的价格,历城一职专官方网站?  建站中国官网:模板定制+SEO优化+建站流程一站式指南  如何在阿里云服务器自主搭建网站?  如何使用Golang安装API文档生成工具_快速生成接口文档  已有域名如何免费搭建网站?  C++时间戳转换成日期时间的步骤和示例代码  如何注册花生壳免费域名并搭建个人网站?  建站之星CMS五站合一模板配置与SEO优化指南  ,购物网站怎么盈利呢?  c# 在高并发下使用反射发射(Reflection.Emit)的性能  建站之星免费版是否永久可用?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  湖州网站制作公司有哪些,浙江中蓝新能源公司官网?  建站之星免费模板:自助建站系统与智能响应式一键生成  建站之星图片链接生成指南:自助建站与智能设计教程  建站主机选择指南:服务器配置与SEO优化实战技巧  c# await 一个已经完成的Task会发生什么  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做? 

您的项目需求

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