0

类似于这个问题 - Array value count javascript

除了动态值之外,我将如何执行此操作?

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

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

我可能会放弃这个想法,并从过去 10 天之类的东西中获取价值计数......但这可能会在以后派上用场(如果甚至可以这样做的话)。

4

3 回答 3

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
}
于 2013-05-28T09:37:05.440 回答
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);
于 2013-05-28T09:35:42.117 回答
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);

看演示

于 2013-05-28T09:33:11.720 回答