You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Underscore.js统计字典数组中标签的出现次数

用Underscore.js优雅统计标签出现次数

嘿,这问题虽说基础,但Underscore的链式调用和工具函数确实能帮我们写出更简洁优雅的实现,完全不用嵌套一堆for循环。我给你分享个直观的方案:

var dict = [{name: 'bob', tags: ['tag1', 'tag2']}, {name: 'alice', tags: ['tag1']}, {name: 'John', tags: ['tag2', 'tag3']}];

var result = _.chain(dict)
  // 第一步:提取所有对象里的tags字段,得到一个二维数组
  .pluck('tags')
  // 第二步:把二维数组展开成一维的标签数组
  .flatten()
  // 第三步:统计每个标签的出现次数,得到 {tag1: 2, tag2: 2, tag3: 1} 这样的统计对象
  .countBy()
  // 第四步:把统计对象转换成你需要的单个对象组成的数组格式
  .map(function(count, tag) {
    var tagObj = {};
    tagObj[tag] = count;
    return tagObj;
  })
  // 最后调用value()获取链式调用的最终结果
  .value();

// 输出结果:[{tag1:2}, {tag2:2}, {tag3:1}]
console.log(result);

如果你的运行环境支持ES6语法,还可以把map里的代码简化得更清爽:

.map((count, tag) => ({ [tag]: count }))

这个方案的核心是利用Underscore的链式调用把数据处理流程串起来,每一步都清晰明了,比手动写循环可读性高多了。另外提一句,你期望结果里tag3的次数写的是3,应该是笔误吧?原数组里tag3只出现了1次哦😉

内容的提问来源于stack exchange,提问作者bli00

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:28:29