Javascript 动态数组值计数

Javascript 动态数组值计数,javascript,jquery,Javascript,Jquery,与此问题类似— 除了使用动态值,我将如何执行此操作 var counts = [] var dates= [ "28/05/2013", "27/05/2013", "28/05/2013", "26/05/2013", "28/05/2013" ]; 如何获得重复数组值的计数?那么有多少个是2013年5月28日等等。日期都是动态的,所以我不能只搜索设定值。我就是不知道该怎么做 我可能会放弃这个想法,然后得到过去10天或其他时间的价值计数。。。但这可能会在以后派上用场(如果有可能的话)。像这样

与此问题类似—

除了使用动态值,我将如何执行此操作

var counts = []
var dates= [ "28/05/2013", "27/05/2013", "28/05/2013", "26/05/2013", "28/05/2013" ];
如何获得重复数组值的计数?那么有多少个是2013年5月28日等等。日期都是动态的,所以我不能只搜索设定值。我就是不知道该怎么做

我可能会放弃这个想法,然后得到过去10天或其他时间的价值计数。。。但这可能会在以后派上用场(如果有可能的话)。

像这样试试

已更新

var dates= [ "28/05/2013", "27/05/2013", "28/05/2013", "26/05/2013", "28/05/2013" ];
var findStr = "28/05/2013";
var indexs = dates.indexOf(findStr,0),count=0;
for (var i=0;i< dates.length;i++){
if (indexs >= 0){
    indexs = dates.indexOf(findStr,indexs + 1);
    count++;
}
}
alert(count);
var日期=[“2013年5月28日”、“2013年5月27日”、“2013年5月28日”、“2013年5月26日”、“2013年5月28日”];
var findStr=“28/05/2013”;
var indexs=dates.indexOf(findStr,0),count=0;
对于(变量i=0;i=0){
indexs=dates.indexOf(findStr,indexs+1);
计数++;
}
}
警报(计数);
像这样试试

已更新

var dates= [ "28/05/2013", "27/05/2013", "28/05/2013", "26/05/2013", "28/05/2013" ];
var findStr = "28/05/2013";
var indexs = dates.indexOf(findStr,0),count=0;
for (var i=0;i< dates.length;i++){
if (indexs >= 0){
    indexs = dates.indexOf(findStr,indexs + 1);
    count++;
}
}
alert(count);
var日期=[“2013年5月28日”、“2013年5月27日”、“2013年5月28日”、“2013年5月26日”、“2013年5月28日”];
var findStr=“28/05/2013”;
var indexs=dates.indexOf(findStr,0),count=0;
对于(变量i=0;i=0){
indexs=dates.indexOf(findStr,indexs+1);
计数++;
}
}
警报(计数);

使
计数
对象在恒定时间内执行重复检测

var counts = {}

for (var i = 0; i < dates.length; i++) {
    var date = dates[i];
    if (counts[date] === undefined) {
        counts[date] = 0;
    }
    counts[date] += 1;
}

console.log(counts);
var计数={}
对于(变量i=0;i
使
计数
对象在恒定时间内执行重复检测

var counts = {}

for (var i = 0; i < dates.length; i++) {
    var date = dates[i];
    if (counts[date] === undefined) {
        counts[date] = 0;
    }
    counts[date] += 1;
}

console.log(counts);
var计数={}
对于(变量i=0;i
这样就可以了:

var counts = {};
for (var i=0; i<dates.length; i++)
    if (dates[i] in counts)
        counts[dates[i]]++;
    else
        counts[dates[i]] = 1;
这可以做到:

var counts = {};
for (var i=0; i<dates.length; i++)
    if (dates[i] in counts)
        counts[dates[i]]++;
    else
        counts[dates[i]] = 1;

您提供的链接上的解决方案应该适合您。。循环遍历数组并调用其中提供的函数。您提供的链接上的解决方案应该适合您。。循环遍历您的数组并调用其中提供的函数。尝试将第一个日期从28替换为27,您将看到您的代码相当混乱。恐怕我也在查找每个重复元素的计数。更好的是,您仍然需要找到一个硬编码的值,所以您所做的只是计算一个值的出现次数。只需在代码上加一个循环,在日期中查找每个findstr就行了……但也是n*2,这比解决方案需要的速度慢得多。不过,您可以添加一个简单的优化。尝试将第一个日期从28天换成27天,您会发现您的代码相当糟糕。恐怕我也在寻找每个重复元素的计数。更好的是,您仍然需要找到一个硬编码的值,所以您所做的只是计算一个值的出现次数。只需在代码上加一个循环,在日期中查找每个findstr就行了……但也是n*2,这比解决方案需要的速度慢得多。不过,你可以添加一个简单的优化。这非常有效。我想我明白你是怎么做的。这很好用。我想我明白你是怎么做的。