我有以下格式的数组:

var array = [
  { id: '555weibo' },
  { id: '578weibo' },
  { id: '111facebook' },
  { id: '123facebook' },
  { id: '145facebookpage' },
  { id: '145facebookpage' },
  { id: '766facebook' },
  { id: '242facebook' },
  { id: '432twitter' },
  { id: '432exing' }
 ];

我需要找到该数组内facebooktwitterxingweibo出现的次数。
例如:
{
  weibo: 2,
  facebook: 6,
  twitter: 1,
  xing: 1
}

我一直在寻找解决方案,但似乎没有任何效果。

下面的代码没有给出预期的结果。非常感谢您的帮助。谢谢你。
var filtered = _.map(diff, function(value, key) {
   return { id: key, count:value };
});

最佳答案

使用下划线:

var services = ['weibo', 'facebook', 'twitter', 'xing'];
var result = _.map(services, function(service){
     var length = _.reject(array, function(el){
           return (el.id.indexOf(service) < 0);
     }).length;
     return {id: service, count: length};
});

09-05 22:36
查看更多