2013-05-28 121 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

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