2013-05-28 192 views
0

与此问题类似 - Array value count javascriptDynamic Array Value Count

我该如何去做这件事,除了动态值?

var counts = [] 
var dates= [ "28/05/2013", "27/05/2013", "28/05/2013", "26/05/2013", "28/05/2013" ]; 

如何获得重复数组值的计数?那么28/05/2013等等。日期都是动态的,所以我不能只搜索设定值。我无法理解我将如何做到这一点。

我可能会放弃这个想法,并从过去10天内获得数值......但这可能会在稍后派上用场(如果甚至可以这样做的话)。

+4

您提供的资料应为你工作的链路上的解决方案..循环throught您的阵列和调用函数在那里提供。 –

回答

3

这将做到这一点:

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

其结果将是

> counts 
{ 
    "28/05/2013": 3, 
    "27/05/2013": 1, 
    "26/05/2013": 1 
} 
0

尝试这样

更新

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); 

See Demo

+0

尝试将第一个日期从28交换到27,并且您会看到您的代码相当破碎。 – Sysyphus

+0

@Sysyphus Sry ..现在尝试我更新代码 – Dineshkani

+0

我正在寻找每个重复元素的计数,我很害怕。 –

3

counts的目的是在固定时间内进行重复检测。

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); 
+0

这工作完美。我想我明白你是如何做到这一点的。 –