Javascript 相对于对象数组中的另一个属性发生的唯一属性计数

Javascript 相对于对象数组中的另一个属性发生的唯一属性计数,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,在下面的数据集中,我想计算每个bKey的aKey数。 这样,对于每一个bKey,有多少个独特的aKey。比如说,如果某个错误已经发生,那么该错误就不应该被计算在内 var fData2 = [ {sex: 'male', bKey: '121', userKey: '04', aKey: '6e5fdb09-319f-4640-b241-2b12d350c027', date: 'Fri Jul 01 06:26:59 UTC 2016', freq: 20, preferenceList:

在下面的数据集中,我想计算每个bKey的aKey数。 这样,对于每一个bKey,有多少个独特的aKey。比如说,如果某个错误已经发生,那么该错误就不应该被计算在内

var fData2 = [
  {sex: 'male', bKey: '121', userKey: '04', aKey: '6e5fdb09-319f-4640-b241-2b12d350c027', date: 'Fri Jul 01 06:26:59 UTC 2016', freq: 20, preferenceList: ['Fashion','Business','Sports'], ageGroup: 'LESS_THAN_15'},
  {sex: 'male', bKey: '122', userKey: '01', aKey: '6e5fdb09-319f-4640-b241-2b12d350c027', date: 'Fri Jul 01 11:59:28 UTC 2016', freq: 22, preferenceList: ['Business'], ageGroup: 'BETWEEN_25_35'},
  {sex: 'female', bKey: '123', userKey: '01', aKey: '6e5fdb09-319f-4640-b241-2b12d350c027', date: 'Thu Jun 30 11:59:28 UTC 2016', freq: 26, preferenceList: ['Housing'], ageGroup: 'BETWEEN_35_45'},
  {sex: 'male', bKey: '121', userKey: '03', aKey: '4a73c208-43a8-49d2-87ba-f44691786c96', date: 'Fri Jul 01 06:26:59 UTC 2016', freq: 38, preferenceList: ['Business','Housing','Sports'], ageGroup: 'BETWEEN_25_35'},
  {sex: 'female', bKey: '124', userKey: '03', aKey: '4a73c208-43a8-49d2-87ba-f44691786c96', date: 'Fri Jul 01 11:59:28 UTC 2016', freq: 20, preferenceList: ['Business','Housing','Sports'], ageGroup: 'BETWEEN_45_55'},
  {sex: 'male', bKey: '125', userKey: '01', aKey: '4a73c208-43a8-49d2-87ba-f44691786c96', date: 'Fri Jul 01 11:59:28 UTC 2016', freq: 42, preferenceList: ['Jewels','Kids'], ageGroup: 'LESS_THAN_15'},
  {sex: 'female', bKey: '123', userKey: '02', aKey: '4a73c208-43a8-49d2-87ba-f44691786c96', date: 'Fri Jul 01 06:26:59 UTC 2016', freq: 34, preferenceList: ['Movies'], ageGroup: 'BETWEEN_55_65'},
  {sex: 'female', bKey: '121', userKey: '03', aKey: '4a73c208-43a8-49d2-87ba-f44691786c96', date: 'Fri Jul 01 06:26:59 UTC 2016', freq: 22, preferenceList: ['Culture'], ageGroup: 'BETWEEN_25_35'},
  {sex: 'female', bKey: '124', userKey: '01', aKey: '4a73c208-43a8-49d2-87ba-f44691786c96', date: 'Fri Jul 01 11:59:28 UTC 2016', freq: 115, preferenceList: ['Kids'], ageGroup: 'BETWEEN_35_45'},
  {sex: 'male', bKey: '122', userKey: '02', aKey: '09a703f3-2273-4b25-ba33-24572ffcdf89', date: 'Thu Jun 30 11:59:28 UTC 2016', freq: 19, preferenceList: [], ageGroup: 'BETWEEN_45_55'},
  {sex: 'female', bKey: '121',userKey: '01', aKey: '09a703f3-2273-4b25-ba33-24572ffcdf89', date: 'Thu Jun 30 06:26:59 UTC 2016', freq: 24, preferenceList: [], ageGroup: 'BETWEEN_35_45'}
];
我希望结果是一个新的对象数组,如下所示

[ {121: 3},{122: 2},{123: 2},{124: 2},{125: 1} ]
我正在尝试这个-

var dataSet = {};
fData2.forEach(function (item) {
  dataSet[ item.bKey ] = (dataSet[ item.aKey ] || 0) + 1;
});

console.log(dataSet);

您可以使用
forEach
循环和对象作为可选参数来执行此操作

var数据=[{“性别”:“男性”、“bKey”:“121”、“用户密钥”:“04”、“aKey”:“6e5fdb09-319f-4640-b241-2B12BD350C027”、“日期”:“2016年7月1日星期五06:26:59 UTC”,“频率”:20,“偏好列表”:[“时尚”、“商业”、“体育”],“年龄组”:“少于15”},“性别”:“男性”、“bKey”:“122”、“用户密钥”:“01”、“aKey”:“6e5fdb09-31F-4640-b241-2B12C027”、“日期”:“2016年7月1日星期五11:59:28 UTC”,“频率”:22,“优先列表”:[“业务”],“年龄组”:“介于25和35之间”;“性别”:“女性”,“bKey”:“123”,“用户密钥”:“01”,“aKey”:“6e5fdb09-319f-4640-b241-2b12d350c027”,“日期”:“2016年6月30日11:59:28 UTC”,“频率”:26,“优先列表”:[“住房”;“年龄组”:“介于35和45之间”;“性别”:“男性”,“bKey”:“bKey”:“121”,“用户密钥”:“03”:4a73c208-43a8-49d2-87ba-f44691786c96,“日期”:“2016年7月1日星期五06:26:59 UTC”,“频率”:38,“优先列表”:[“商务”、“住房”、“体育”],“年龄组”:“介于25和35之间,{“性别”:“女性”、“bKey”:“124”、“用户密钥”:“03”、“aKey”:“4a73c208-49d2-87ba-f44691786c96”,“日期”:“2016年7月1日星期五11:59:28 UTC”,“频率”:20,“优先列表”[“商务”、“住房”;“体育”]“年龄组”:“介于45和55之间”{“性别”:“男性”、“bKey”:“125”、“用户密钥”:“01”、“aKey”:“4a73c208-43a8-49d2-87ba-f44691786c96”、“日期”:“2016年7月1日星期五11:59:28 UTC”,“频率”:42,“首选项列表”:[“珠宝”、“儿童”],“年龄组”:“少于15”{“性别”:“女性”、“bKey”:“123”、“用户密钥”:“02”、“aKey”:“4a73c208-4978BA-F466C96”:“日期”2016年7月1日星期五06:26:59 UTC,“频率”:34,“偏好列表”:[“电影],“年龄组”:“介于55和65之间”{“性别”:“女性”、“bKey”:“121”,“用户密钥”:“03”,“aKey”:“4a73c208-43a8-49d2-87ba-F446916C96”,“日期”:“2016年7月1日星期五06:26:59 UTC”,“频率”:22,“偏好列表”:[“文化”;“年龄组”:“介于25和35之间”{“性别”:“女性”、“bKey”:“bKey”:“124”,“用户密钥”:“aKey”:4a73c208-43a8-49d2-87ba-f44691786c96,“日期”:“2016年7月1日星期五11:59:28 UTC”,“频率”:115,“优先列表”[“儿童”],“年龄组”:“介于35和45之间”;“性别”;“男性”;“bKey”:“122”,“用户密钥”;“02”,“aKey”;“09a703f3-2273-4b25-ba33-24572ffcdf89”,“日期”;“2016年6月30日11:59:28”,“频率”:19,“优先列表”;“性别”;“年龄组”;“介于55和“女性”;“bKey”:121、“用户密钥”:“01”、“aKey”:“09a703f3-2273-4b25-ba33-24572ffcdf89”、“日期”:“2016年6月30日星期四06:26:59 UTC”、“频率”:24、“首选项列表”:[],“年龄组”:“介于35和45之间”]
var result={}
data.forEach(函数(e){
如果(!这[e.bKey+e.aKey]){
这[e.bKey+e.aKey]=true;
结果[e.bKey]=(结果[e.bKey]| | 0)+1;
}
}, {})

console.log(result)
ohh是的,很抱歉弄错了。这是item.bKey。
var dataSet={};fData2.forEach(函数(item){dataSet[item.bKey]=(dataSet[item.userKey]| | 0)+1;});console.log(dataSet)也请考虑AKEY作为用户密钥。我不能编辑这个问题。你确定结果不是代码>3 2×2 1 1 < /代码>吗?是的,我确信。你可以在这里看到这个例子[两者] <代码> 124 < /代码>都有相同的<代码> AKEY < /代码>。所以只有1。谢谢Nenad,这是很大的帮助。我只想要这个。