javascript - 您将如何计算数组中数组中对象的实例

标签 javascript mongodb d3.js meteor

所以,基本上我得到一组记录作为对象数组,如

[{name: tyler, categories: ["friends", "neighbor"]}, {name: joe, categories: ["friends"]}]. 

我想计算内部数组实例的内容。所以在这个例子中,返回将是 friends: 2 和 neighbor: 1。作为一些背景信息,我正在 meteor 框架内从 mongo 获取记录集合。然后我使用 fetch() 将这些记录转换为上面的对象数组。然后我想使用这些对象根据外部数组中每个对象的内部数组中每个对象的特定实例的计数创建一个饼图(这些对象将是数据库查询返回的对象)。

最佳答案

您可以编写一个简单的函数来计算您的类别计数并将结果存储在键/值对的字典中。

function countCategories(docs){
  // accumulate results inside a JS object acting as a key/value dict
  var result = {};
  docs.forEach(function(doc){
    doc.categories.forEach(function(category){
      // initialize count to 0 when a new key is found
      if(_.isUndefined(result[category])){
        result[category] = 0;
      }
      // increment the corresponding count
      result[category]++;
    });
  });
  return result;
}

鉴于您问题中的示例数据,此函数将返回:

Object {friends: 2, neighbor: 1}

编辑:

然后您可以将此字典转换为对象数组。

function convertToArray(dict){
  var result = [];
  _.each(dict, function(value, key){
    var object = {
      category: key,
      count: value
    };
    result.push(object);
  });
  return result;
}

关于javascript - 您将如何计算数组中数组中对象的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30441942/

相关文章:

javascript - 如何从按钮运行 <script>

javascript - Grunt uglify 0.5 不写源图吗?

javascript - 如何获取突出显示的单词并将其包装在具有数据属性的新元素中?

javascript - 以 Angular 删除 beforeunload 事件

node.js - 如何将 'resolve' MongoDB 对象转换为 Nodejs 中的特定 JSON 结构?

mongodb - MongoDB聚合中添加数组元素字段

javascript - php 中的 url 参数名称是否区分大小写?如果不区分大小写,它们是否可以轻松标准化(并设为小写等)?

mongodb - NodeJS中如何获取回调函数的返回值

javascript - 重置缩放: only updates on pan?

javascript - IE11 中的 D3 和弦示例悬停问题