数组中的javascript计数和组重复字符串
数组中的javascript计数和组重复字符串,javascript,arrays,count,Javascript,Arrays,Count,我有这个阵列: ["2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "20
我有这个阵列:
["2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-22", "2017-06-22", "2017-06-22", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-25", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-27"]
我正在尝试编写一个代码,以在输出中获得以下内容:
['date', "2017-06-2", "2017-06-22", "2017-06-23", "2017-06-24", "2017-06-25"]
['repeated_count', 5, 9, 3, 8, 4]
我就是这么做的,但这是错的:
var ChartDate=上述数据↑
var ChartDates=[];
var RepeatedNum=[];
对于(i=0;i我尝试了一下,发现将日期/计数成对处理比将它们放在单独的容器中要容易一些。从下面的输出转换为所需的格式应该很简单
let output = data.reduce((acc, d)=>{
e = acc.find(e=> e[0] == d);
if(e) e[1]++;
else acc.push([d, 1]);
return acc;
}, []);
这假设您的日期列表被称为数据
输出
将是两个元素数组的列表,第一个元素是日期,第二个元素是计数
哦,差点忘了:我试了一下,发现将日期/计数成对处理比将它们放在单独的容器中要容易一些。从下面的输出转换为所需的格式应该很简单
let output = data.reduce((acc, d)=>{
e = acc.find(e=> e[0] == d);
if(e) e[1]++;
else acc.push([d, 1]);
return acc;
}, []);
这假设您的日期列表被称为数据
输出
将是两个元素数组的列表,第一个元素是日期,第二个元素是计数
哦,差点忘了:首先,循环数组中的所有日期,并将它们计数到tall
对象中,如果日期对应的键已经存在,则将其递增1;如果不存在,则生成一个值为1的新键。然后,通过对象执行for in循环,并填充唯一日期de>带有日期的数组和带有重复次数的repeatedNumber
数组
const dates = ["2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-22", "2017-06-22", "2017-06-22", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-25", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-27"];
const tally = {};
const uniqueDates = ['date'];
const repeatedNumber =['repeated_count'];
for(let i = 0; i < dates.length; i++) {
if(tally.hasOwnProperty(dates[i])) {
tally[dates[i]]++;
} else {
tally[dates[i]] = 1;
}
};
for(let date in tally) {
uniqueDates.push(date);
repeatedNumber.push(tally[date]);
}
console.log(uniqueDates);
console.log(repeatedNumber);
const dates=[“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-06-21”、“2017-06-06-21”、“2017-06-06-06-21”、“2017-06-06-06-06-21”,"2017-06-21", "2017-06-21", "2017-06-22", "2017-06-22", "2017-06-22", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-25", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-27"];
常量计数={};
const uniqueDates=['date'];
常量repeatedNumber=[“重复计数”];
for(设i=0;i
首先,循环遍历数组中的所有日期,并将它们计数到Tall
对象中,方法是将与日期对应的键增加1(如果已经存在),或者使用值1(如果不存在)创建一个新键。然后,在对象中执行for in循环,并用日期填充uniqueDates
数组s和带有重复次数的repeatedNumber
数组
const dates = ["2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-22", "2017-06-22", "2017-06-22", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-25", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-27"];
const tally = {};
const uniqueDates = ['date'];
const repeatedNumber =['repeated_count'];
for(let i = 0; i < dates.length; i++) {
if(tally.hasOwnProperty(dates[i])) {
tally[dates[i]]++;
} else {
tally[dates[i]] = 1;
}
};
for(let date in tally) {
uniqueDates.push(date);
repeatedNumber.push(tally[date]);
}
console.log(uniqueDates);
console.log(repeatedNumber);
const dates=[“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-06-21”、“2017-06-06-21”、“2017-06-06-06-21”、“2017-06-06-06-06-21”,"2017-06-21", "2017-06-21", "2017-06-22", "2017-06-22", "2017-06-22", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-25", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-27"];
常量计数={};
const uniqueDates=['date'];
常量repeatedNumber=[“重复计数”];
for(设i=0;i
看起来这个问题已经得到了回答,但根据您已经走的路线,这里有另一个选项。我认为发布的reduce版本可能是最有效的,但如果您不熟悉reduce,那么这里有另一个选项
var ChartDate = ["2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-21", "2017-06-22", "2017-06-22", "2017-06-22", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-25", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-27"]
var ChartDates = ['date'];
var RepeatedNum = ['repeated_count'];
for (i = 0; i < ChartDate.length; i++) {
if (!ChartDates.includes(ChartDate[i])) {
ChartDates.push(ChartDate[i]);
RepeatedNum.push(1);
} else {
var index = ChartDates.indexOf(ChartDate[i]);
RepeatedNum[index] = RepeatedNum[index] + 1;
}
}
console.log(ChartDates);
console.log(RepeatedNum);
var ChartDate=[“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-21”、“2017-06-06-21”、“2017-06-06-21”、“2017-06-06-06-21”、“2017-06-06-06-06-21”,"2017-06-21", "2017-06-21", "2017-06-22", "2017-06-22", "2017-06-22", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-23", "2017-06-25", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-26", "2017-06-27"]
var ChartDates=['date'];
var RepeatedNum=['repeated_count'];
对于(i=0;i
看起来这个问题已经得到了回答,但根据您已经走的路线,这里有另一个选项。我认为发布的reduce版本可能是mo
var chartDateMap = {};
for(var i=0; i<chartDate.length; i++) {
if(!chartDateMap[chartDate[i]]) chartDateMap[chartDate[i]] = 0;
chartDateMap[chartDate[i]]++;
}