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小时内与您取得联系。