计算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;
}
}