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