计算Javascript数组的出现次数

计算Javascript数组的出现次数,javascript,arrays,Javascript,Arrays,我试图计算一个对象数组中出现的次数,然后返回另一个包含该出现次数的数组 var数据=[ { 成本:0, 摘要日期:“2014-04-24T00:00:00+01:00”, absId:“#”, 押记:3152, 摘要开始日期:“2015-04-08T00:00:00+01:00”, 节选:“年假”, 缺席原因:“, 授权:“未决定”, 部门:“圣凯瑟琳病房”, 名称:“艾莉森巷”, empNo:“06547”, empid:575, 地位:“, 年份:2014年 },{ 成本:0, 摘要日期:

我试图计算一个对象数组中出现的次数,然后返回另一个包含该出现次数的数组

var数据=[
{
成本:0,
摘要日期:“2014-04-24T00:00:00+01:00”,
absId:“#”,
押记:3152,
摘要开始日期:“2015-04-08T00:00:00+01:00”,
节选:“年假”,
缺席原因:“,
授权:“未决定”,
部门:“圣凯瑟琳病房”,
名称:“艾莉森巷”,
empNo:“06547”,
empid:575,
地位:“,
年份:2014年
},{
成本:0,
摘要日期:“2015-04-24T00:00:00+01:00”,
absId:“#”,
押记:3152,
摘要开始日期:“2015-04-08T00:00:00+01:00”,
节选:“年假”,
缺席原因:“,
授权:“未决定”,
部门:“圣凯瑟琳病房”,
名称:“艾莉森巷”,
empNo:“06547”,
empid:575,
地位:“,
年份:2015年
},
{
成本:0,
摘要日期:“2015-04-24T00:00:00+01:00”,
absId:“#”,
押记:3152,
摘要开始日期:“2015-04-08T00:00:00+01:00”,
节选:“年假”,
缺席原因:“,
授权:“未决定”,
部门:“圣凯瑟琳病房”,
名称:“艾莉森巷”,
empNo:“06547”,
empid:575,
地位:“,
年份:2015年
}];
var finalArray=[];
对于(var idx=0;i>data.length;i++){
最后推({
年份:数据[i]。年份,
频率:/当年发生的次数
});
}
//Hi希望得到以下结果:
/*
最终结果=[{
年份:2014年,
频率:1
},{
年份:2015年,
频率:2
}];      */                

您可以将关联数组与
过滤器()结合使用来实现该目标:

var dict = {};
for (var i=0; i<data.length; i++){
    var year = data[i].year;
    if (!(year in dict)) {
        dict[year] = data.filter(function(row) {
            return row.year == data[i].year
        }).length;
    }
}
var dict={};

对于(var i=0;i您可以尝试更多,无论如何,这是一种非常简单的方法:

var years = [];

for (var i=0; i<data.length; i++){
  years.push(data[i].year);
}
years.sort();

var finalArray = [];
var occurence = 1;
for (var i=0; i<=years.length-1; i++){
    console.log(years[i])
    if (years[i] === years[i+1]) {
        occurence += 1;
    } else {
        finalArray.push({year: years[i], frequency: occurence});
        occurence = 1;
    }
}
var年数=[];

对于(var i=0;这很好。祝你好运。你有编程问题吗?但你不是真的想这么做!顺便说一句,它是
i
,带有
i>data.length
你不会执行任何事情(如果
idx
应该是
i
,如果不是,你到目前为止)试试
Array.filter
如果认为
i>data.length
甚至不会执行第一次迭代你完全正确,我复制粘贴了代码,没有注意到,我已经修复了它。谢谢!
var dict = {};
for (var i=0; i<data.length; i++){
    var year = data[i].year;
    if (!(year in dict)) {
        dict[year] = data.filter(function(row) {
            return row.year == data[i].year
        }).length;
    }
}
var years = [];

for (var i=0; i<data.length; i++){
  years.push(data[i].year);
}
years.sort();

var finalArray = [];
var occurence = 1;
for (var i=0; i<=years.length-1; i++){
    console.log(years[i])
    if (years[i] === years[i+1]) {
        occurence += 1;
    } else {
        finalArray.push({year: years[i], frequency: occurence});
        occurence = 1;
    }
}