所以,基本上我得到一组记录作为对象数组,如
[{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/