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

发布时间 - 2026-01-11 02:15:48    点击率:

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 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: JavaScript如何操作视频_媒体API怎么控制播放  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  Python函数文档自动校验_规范解析【教程】  网站制作软件有哪些,制图软件有哪些?  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  微信小程序 input输入框控件详解及实例(多种示例)  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  如何批量查询域名的建站时间记录?  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  Laravel如何保护应用免受CSRF攻击?(原理和示例)  ,在苏州找工作,上哪个网站比较好?  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】  Laravel怎么上传文件_Laravel图片上传及存储配置  Laravel怎么判断请求类型_Laravel Request isMethod用法  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  高性能网站服务器配置指南:安全稳定与高效建站核心方案  用yum安装MySQLdb模块的步骤方法  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】  Laravel如何实现文件上传和存储?(本地与S3配置)  装修招标网站设计制作流程,装修招标流程?  Python高阶函数应用_函数作为参数说明【指导】  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  如何用PHP工具快速搭建高效网站?  如何生成腾讯云建站专用兑换码?  百度浏览器如何管理插件 百度浏览器插件管理方法  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  Laravel如何创建自定义Artisan命令?(代码示例)  bing浏览器学术搜索入口_bing学术文献检索地址  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  Laravel集合Collection怎么用_Laravel集合常用函数详解  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  用v-html解决Vue.js渲染中html标签不被解析的问题  魔毅自助建站系统:模板定制与SEO优化一键生成指南  如何确保FTP站点访问权限与数据传输安全?  如何在建站之星网店版论坛获取技术支持?  详解Huffman编码算法之Java实现  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  Python图片处理进阶教程_Pillow滤镜与图像增强  青岛网站建设如何选择本地服务器?  无锡营销型网站制作公司,无锡网选车牌流程?  Laravel怎么连接多个数据库_Laravel多数据库连接配置