首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Underscore.js groupBy两个级别

Underscore.js是一个流行的JavaScript库,提供了丰富的函数和工具来简化和增强JavaScript编程。其中的groupBy函数可以根据指定的条件对集合进行分组,并返回一个以分组依据为键、分组结果为值的对象。

在Underscore.js中,groupBy函数有两个级别的应用:

  1. 第一级别的应用是对集合中的元素进行分组。可以通过传入一个函数作为参数来定义分组的条件。该函数会被应用于集合中的每个元素,并返回用作分组依据的键。groupBy函数会根据这些键将集合中的元素进行分组,并返回一个以分组依据为键、分组结果为值的对象。

举个例子,假设有一个包含多个对象的数组,每个对象都有一个属性"category"表示其所属的类别。我们可以使用groupBy函数按照类别将对象分组:

代码语言:txt
复制
var data = [
  { name: 'A', category: 'cat1' },
  { name: 'B', category: 'cat2' },
  { name: 'C', category: 'cat1' },
  { name: 'D', category: 'cat2' }
];

var result = _.groupBy(data, function(obj) {
  return obj.category;
});

console.log(result);

输出结果为:

代码语言:txt
复制
{
  cat1: [
    { name: 'A', category: 'cat1' },
    { name: 'C', category: 'cat1' }
  ],
  cat2: [
    { name: 'B', category: 'cat2' },
    { name: 'D', category: 'cat2' }
  ]
}
  1. 第二级别的应用是对分组结果进行再次分组。也就是说,可以使用嵌套的groupBy函数对已经分组的结果进行进一步的分组。这时,第一个groupBy函数的参数可以是一个数组,表示多个分组条件。Underscore.js会依次应用这些条件进行分组。

继续以上面的例子为例,我们可以按照类别和名称两个条件对对象进行分组:

代码语言:txt
复制
var result = _.groupBy(data, ['category', 'name']);

console.log(result);

输出结果为:

代码语言:txt
复制
{
  cat1: {
    A: [{ name: 'A', category: 'cat1' }],
    C: [{ name: 'C', category: 'cat1' }]
  },
  cat2: {
    B: [{ name: 'B', category: 'cat2' }],
    D: [{ name: 'D', category: 'cat2' }]
  }
}

在这个例子中,返回的结果是一个嵌套对象,第一级的键是类别,第二级的键是名称,值是对应的对象。

对于Underscore.js的更多使用方式和详细介绍,可以参考腾讯云的相关产品"Serverless Cloud Function",该产品提供了简单、弹性的函数计算能力,适用于处理各类后端逻辑和云端事件触发。

链接地址:https://cloud.tencent.com/product/scf

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

学习underscore源码整体架构,打造属于自己的函数式编程类库

unpkg.com源码地址:https://unpkg.com/underscore@1.9.1/underscore.js 虽然很多人都没用过 underscore.js,但看下官方文档都应该知道如何使用...搜索到两个在官方库中的 ISSUE,大概意思就是兼容IE低版本的写法。有兴趣的可以点击去看看。...(_.isFunction(obj[key])) names.push(key); } return names.sort(); }; _.functions 和 _.methods 两个方法...underscore.js 究竟在 _和 _.prototype挂载了多少方法和属性 再来看下 underscore.js究竟挂载在 _函数对象上有多少静态方法和属性,和挂载 _.prototype上有多少方法和属性...staticProperty.push(name); } } console.log(staticProperty); // ["VERSION", "templateSettings"] 两个

51420

Backbone.js应用基础

前言:   Backbone.js是一款JavaScript MVC应用框架,强制依赖于一个实用型js库underscore.js,非强制依赖于jquery;其主要组件有模型,视图,集合,路由;与后台的交互主要是通过...Restful JSON 进行数据传输; 基础Backbone.js知识:   1、引入js文件:如果依赖于第三方类库如jquery,则最好先引入;之后引入underscore.js 这是必须引入且在引入...charset="UTF-8"> Backbone <script src="3rd/<em>underscore.js</em>...方法是发送POST新建或PUT修改请求;fetch是调用GET方法;destroy方法是使用delete请求方式向服务器发送对象的id,服务器做删除记录操作;    模型对象集合提供了fetch和create<em>两个</em>方法与服务器进行交互

65630
  • Pandas常用的数据处理方法

    如果merge函数只指定了两个DataFrame,它会自动搜索两个DataFrame中相同的列索引,即key,当然,这可以进行指定,下面的语句和上面是等价的: pd.merge(df1,df2,on='...key') 当两个DataFrame没有相同的列索引时,我们可以指定链接的列: #如果两个DataFrame的列名不同,可以分别指定 df3 = pd.DataFrame({'lkey':['b','b...默认unstack是将最里层的行索引旋转为列索引,不过我们可以指定unstack的层级,unstack之后作为旋转轴的级别将会成为结果中的最低级别,当然,我们也可以根据名字指定要旋转的索引,下面两句代码是等价的...如果不是所有的级别都能在分组中找到的话,unstack操作可能会产生缺失数据: s1 = pd.Series([0,1,2,3],index=['a','b','c','d']) s2 = pd.Series...索引级别 columns = pd.MultiIndex.from_arrays([['US','US','US','JP','JP'],[1,3,5,1,3]],names=['city','tenor

    8.4K90

    DataFrame.groupby()所见的各种用法详解

    groupby的函数定义: DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True...level : 接收int、级别名称或序列,默认为None;如果轴是一个多索引(层次化),则按一个或多个特定级别分组。...df_expenditure_mean = df.groupby(['Gender', 'name'])['income'].mean() 输出示例: ?...所见 3 :解决groupby.apply() 后层级索引levels上移的问题 在所见 2 中我们知道,使用参数 as_index 就可使 groupby 的结果不以组标签为索引,但是后来在使用groupby.apply...到此这篇关于 DataFrame.groupby() 所见的各种用法详解的文章就介绍到这了,更多相关 DataFrame.groupby()用法内容请搜索ZaLou.Cn以前的文章或继续浏览下面的相关文章希望大家以后多多支持

    7.8K20

    Word报告自动生成(例如 导出数据库结构)

    级别:默认文档级别为0,出现的第一层循环为1,其内部若再次嵌套循环则级别为2,依次类推。     ..., 就用这个XX吧 )      名称:loop名称,方便与其他 loop区别  B.更新指定位置的文字     如图四中的【服务器名】、【表总数】等,只需要替换对应的文字即可:     label_级别...级别:默认文档级别为0,出现的第一层循环为1,其内部若再次嵌套循环则级别为2,依次类推。     ...当级别为1的时候,自然取该级别循环的行数据。 C.表格      表格的配置原本也想对表格添加书签,后来发现有个表格属性, 觉得写在这里更好一些。 ?  ...执行后可以, 但有两个问题就是第一会弹出Excel框, 处理完后会自动关闭.

    3.4K30

    Python之数据聚合与分组运算

    GroupBy的size方法,它可以返回一个含有分组大小的Series。 4. gorupby对分组进行迭代,可以产生一组二元元组(由分组名和数据块组成)。 5....选取一个或以组列 对于由GroupBy对象,如果用一个(单个字符串)或一组(字符串数组)列名对其进行索引,就能实现选取部分列进行聚合的目的。 6. 通过字典或Series进行分组。 7....根据索引级别分组:层次化索引数据集最方便的地方就在于它能够根据索引级别进行聚合。要实现该目的,通过level关键字传入级别编码或者名称即可。 8....10 apply:一般性的“拆分-应用-合并” 最一般化的GroupBy方法是apply,它会将待处理的对象拆分成多个片段,然后对个片段调用传入的函数,最后尝试将各片段组合到一起。...将这些函数跟GroupBy结合起来,就能轻松地实现对数据集的桶(bucket)或分位数(quantile)分析。

    1.2K90

    开发ETL为什么很多人用R不用Python

    探讨R中的ETL体系 ETL在数据工作中起着至关重要的作用,主要用途有两个:(1)数据生产(2)为探索性数据分析与数据建模服务。...上图截取的是复杂的groupby问题中对于5G与50G数据各ETL工具的用时情况,项目运行服务器的内存为128G,核数40。...服务器为32G、8核,拉取Python3.6、R3.6.2两个docker分别测试。...(id4, id5)] modin用时174秒,由于modin暂不支持多列的groupby,实际上还是用的pandas的groupby x.groupby([‘id4’,‘id5’]).agg({‘v3...下图是个简易版R的ETL框架,可处理G以下数据, ################################################## 2020年1月14号更新:关于应用场景,再次说明下, G级别数据或以下

    1.9K30

    《利用Python进行数据分析·第2版》第10章 数据聚合与分组运算10.1 GroupBy机制10.2 数据聚合10.3 apply:一般性的“拆分-应用-合并”10.4 透视表和交叉表10.5 总

    two 0.478943 b one -0.519439 two -0.555730 Name: data1, dtype: float64 这里,我通过两个键对数据进行了分组...,使用level关键字传递级别序号或名字: In [50]: hier_df.groupby(level='cty', axis=1).count() Out[50]: cty JP US 0...的“拆分-应用-合并”范式,可以进行DataFrame的列与列之间或两个Series之间的运算(比如分组加权平均)。...2.668874 2.408602 2.569672 0.159328 0.163196 0.160803 这里,All值为平均数:不单独考虑烟民与非烟民(All列),不单独考虑行分组两个级别中的任何单项...5 USA 1 4 5 All 3 7 10 crosstab的前两个参数可以是数组或

    5K90

    Python数据分析实战基础 | 清洗常用4板斧

    left_index与right_index是当我们用索引(这两个表的名字在索引中)连接时指定的参数,设置为on表示用该表的索引作为连接的条件(或者说桥梁)。...这次需求是筛选出访客数大于10000的一级渠道,loc一下: 在行参数设置好同时满足访客数大于10000和流量级别等于“一级”这两个条件即可。...在分组的版块中,我们重点介绍groupby分组和cut切分。...groupby是分组函数,最主要的参数是列参数,即按照哪一列或者哪几列(多列要用列表外括)进行汇总,这里是按照流量级别: 可以看到,直接分组之后,没有返回任何我们期望的数据,要进一步得到数据,需要在分组的时候对相关字段进行计算...此处我们只想要各级别流量下的访客数和支付金额,需要指明参数: 流量级别作为汇总的依据列,默认转化为索引列,如果我们不希望它变成索引,向groupby内传入参数as_index = False即可:

    2.1K21

    17种将离散特征转化为数字特征的方法

    每个级别映射到一个伪列(即0/1的列),指示该行是否携带属于该级别。...所以,如果除数足够大,两个不同的字符串不太可能映射到同一个整数。那为什么有用呢?实际上,这有一个非常实际的应用叫做“哈希技巧”。 假设你希望使用逻辑回归来生成电子邮件垃圾邮件分类器。...11.TargetEncoder 假设有两个变量:一个是离散变量(x),一个是数值变量(y)。假设你想把x转换成一个数值变量。你可能需要使用y“携带”的信息。...JamesSteinEncoder有两个显著的优点:它提供比最大似然估计更好的估计,并且不需要任何参数设置。 14.GLMMEncoder GLMMEncoder采用一种完全不同的方法。...y_level_ones = x.replace(y.groupby(x).apply(lambda l: (l == 1).sum())) y_level_zeros = x.replace(y.groupby

    4K31

    Pandas 秘籍:6~11

    序列flights_count具有两个级别的多重索引。 从多重索引中选择行的一种方法是将loc索引运算符传递给精确级别值的元组。...聚合后解除堆叠 使用用groupby聚合复制pivot_table 重命名轴级别以方便重塑 将多个变量存储为列名时进行整理 将多个变量存储为列值时进行整理 在同一单元格中存储两个或多个值时进行整理 在列名和值中存储变量时进行整理...如果您看一下步骤 2 的输出,您会注意到有两个索引级别。 默认情况下,unstack方法使用最里面的索引级别作为新的列值。 索引级别从外部从零开始编号。...列级别的顺序也有所不同,其中pivot_table将聚合函数置于values参数中列之前的级别。 这与swaplevel方法相等,在这种情况下,该方法将切换前两个级别的顺序。...步骤 1 中groupby操作的结果数据帧每个轴具有多个级别。 列级别未命名,这将要求我们仅按其整数位置引用它们。

    34K10
    领券