重複を確認する必要がある日付のリストと、JavaScript で実装する必要がある重複した日付の数を数えています...事前に感謝して助けてください。
EX: { 12/11/2011, 12/11/2011, 11/4/2012, 12/6/2012, 12/6/2012, 12/6/2012}
Desire output: {12/11/2011, 11/4/2012, 12/6/2012}
count: 12/11/2011 =2
count: 12/6/2012 =3
質問する
374 次
2 に答える
1
Underscore.jsを使用する
_.reduce(list, iterator, memo, [context]) エイリアス: inject、foldl inject および foldl とも呼ばれる reduce は、値のリストを 1 つの値に煮詰めます。Memo はリダクションの初期状態であり、その連続する各ステップは iterator によって返される必要があります。
例:
var dates = [ '1/1/2006', '1/1/2006', '1/1/2007', '1/1/2007', '1/1/2007', '1/1/2006', '1/1/2012', '1/1/2006', '1/1/2009', '1/1/2012'];
var x = _.reduce(dates,
function(counts, date) {
counts[date] = (counts[date] || 0) + 1;
return counts;
}, {});
alert(JSON.stringify(x));
プロデュース
{"1/1/2006":4,"1/1/2007":3,"1/1/2012":2,"1/1/2009":1}
</p>
于 2012-07-06T12:13:29.267 に答える
0
日付が文字列 (文字列として保存) の場合は、次のように試すことができます。
var dates = ["12/11/2011", "12/11/2011", "11/4/2012", "12/6/2012", "12/6/2012", "12/6/2012"];
var dates_set = {}; // key will be date, and values will be count
for (var i = dates.length - 1; i >= 0; i--) {
var d = dates[i];
if (dates_set.hasOwnProperty(d)) { // already is in our set, just increase counter
dates_set[d] = dates_set[d] + 1;;
} else { // there is no such date, lets add it
dates_set[d] = 1
}
};
document.write(dates_set["12/11/2011"]);
document.write("<br />");
document.write(dates_set["12/6/2012"]);
于 2012-07-02T13:16:56.997 に答える